Learn Amazon Web Services in a Month of Lunches guides you through the process of building a robust and secure web application using the core AWS services you really need to know. You’ll be amazed by how much you can accomplish with AWS!
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
About the Technology
Cloud computing has transformed the way we build and deliver software. With the Amazon Web Services cloud platform, you can trade expensive glass room hardware and custom infrastructure for virtual servers and easy-to-configure storage, security, and networking services. Better, because you don’t own the hardware, you only pay for the computing power you need! Just learn a few key ideas and techniques and you can have applications up and running in AWS in minutes.
About the Book
Learn Amazon Web Services in a Month of Lunches gets you started with AWS fast. In just 21 bite-size lessons, you’ll learn the concepts and practical techniques you need to deploy and manage applications. You’ll learn by doing real-world labs that guide you from the core AWS tool set through setting up security and storage and planning for growth. You’ll even deploy a public-facing application that’s highly available, scalable, and load balanced.
What’s Inside
First steps with AWS – no experience required
Deploy web apps using EC2, RDS, S3, and Route 53
Cheap and fast system backups
Setting up cloud automation
About the Reader
If you know your way around Windows or Linux and have a basic idea of how web applications work, you’re ready to start using AWS.
About the Author
David Clinton is a system administrator, teacher, and writer. He has administered, written about, and created training materials for many important technology subjects including Linux systems, cloud computing (AWS in particular), and container technologies like Docker. Many of his video training courses can be found on Pluralsight.com, and links to his other books (on Linux administration and server virtualization) can be found at https://bootstrap-it.com.
Table of Contents
Before you begin
The 10-minute EC2 web server
Provisioning a more robust EC2 website
Databases on AWS
DNS: what’s in a name?
S3: cheap, fast file storage
S3: cheap, fast system backups
AWS security: working with IAM users, groups, and roles
Managing growth
Pushing back against the chaos: using resource tags
CloudWatch: monitoring AWS resources for fun and profit
Another way to play: the command-line interface
Keeping ahead of user demand
High availability: working with AWS networking tools
High availability: load balancing
High availability: auto scaling
High availability: content-delivery networks
Building hybrid infrastructure
Cloud automation: working with Elastic Beanstalk, Docker, and Lambda
AWS Lambda in Action is an example-driven tutorial that teaches you how to build applications that use an event-driven approach on the back end.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
About the Technology
With AWS Lambda, you write your code and upload it to the AWS cloud. AWS Lambda responds to the events triggered by your application or your users, and automatically manages the underlying computer resources for you. Back-end tasks like analyzing a new document or processing requests from a mobile app are easy to implement. Your application is divided into small functions, leading naturally to a reactive architecture and the adoption of microservices.
About the Book
AWS Lambda in Action is an example-driven tutorial that teaches you how to build applications that use an event-driven approach on the back-end. Starting with an overview of AWS Lambda, the book moves on to show you common examples and patterns that you can use to call Lambda functions from a web page or a mobile app. The second part of the book puts these smaller examples together to build larger applications. By the end, you’ll be ready to create applications that take advantage of the high availability, security, performance, and scalability of AWS.
What’s Inside
Create a simple API
Create an event-driven media-sharing application
Secure access to your application in the cloud
Use functions from different clients like web pages or mobile apps
Connect your application with external services
About the Reader
Requires basic knowledge of JavaScript. Some examples are also provided in Python. No AWS experience is assumed.
About the Author
Danilo Poccia is a technical evangelist at Amazon Web Services and a frequent speaker at public events and workshops.
Table of Contents
PART 1 – FIRST STEPS
Running functions in the cloud
Your first Lambda function
Your function as a web API
PART 2 – BUILDING EVENT-DRIVEN APPLICATIONS
Managing security
Using standalone functions
Managing identities
Calling functions from a client
Designing an authentication service
Implementing an authentication service
Adding more features to the authentication service
Bottlerocket is a Linux-based open-source operating system that is purpose-built by Amazon Web Services for running containers on virtual machines or bare metal hosts[10]
Manning publishes the best quality IT books in the industry.
Manning is an independent publisher, providing computer books for software developers, engineers, architects, system administrators, and managers. Our books also cover topics for young programmers, students, and occasionally children.
summary
Manning is an independent publisher of computer books and video courses for software developers, engineers, architects, system administrators, managers and all who are professionally involved with the computer business. We also publish for students and young programmers, including occasionally for children. We are an entirely virtual organization based on Shelter Island, New York, with many staff working from far-flung places like Manila and Zagreb.
company character
“Independent” means we are not owned by a large corporate entity and are free to make decisions without bureaucratic overhead. That has allowed us to innovate and be flexible and to quickly adjust what we do as we go. We were the first by several years to sell our books as unprotected PDFs, something that later became commonplace. We were the first to start selling books before they were finished, in the Manning Early Access Program. This gave our readers access to our content as soon as it was readable, and this too has become common in the industry. And it means we are thinking every day about new ways to satisfy our customers, some of which we hope you will be pleased to discover in the not-too-distant future.
how we improve
We published our first book in 1993 and have been learning from our successes, and even more from our mistakes, ever since. Every new book teaches us something that helps us improve:
How to choose the topics we publish on
How to find the right authors for each book
How to help authors write the best books they can
How to ensure the content is valuable and easy to learn
How to let readers know about our content
book series
We publish standalone titles as well as the following book series:
Hello!
In Action
In Practice
In Depth
In a Month of Lunches
availability
Readers can access our books through the Manning Early Access Program, O’Reilly Learning (formerly Safari Books Online), and iBooks. Print copies, wherever they are bought, come with free electronic versions in PDF, ePub and Kindle formats. With your print copy in hand, register it on the Manning site and you can download the digital versions from your account.
At this time, our eBooks are available only from Manning.com and Apple’s iBookstore.
Udemy, Inc. is an American massive open online course (MOOC) provider aimed at professional adults and students. It was founded in May 2010 by Eren Bali, Gagan Biyani, and Oktay Caglar.
As of February 2021, the platform has more than 40 million students, 155,000 courses and 70,000 instructors teaching courses in over 65 languages. There have been over 480 million course enrollments. Students and instructors come from 180+ countries and 2/3 of the students are located outside of the U.S.[3]
Students take courses largely as a means of improving job-related skills.[4] Some courses generate credit toward technical certification. Udemy has made a special effort to attract corporate trainers seeking to create coursework for employees of their company.[5] As of 2021, there are more than 155,000 courses on the website.[6][3]
The headquarters of Udemy is located in San Francisco, California, with offices in Denver, Colorado; Dublin, Ireland; Ankara, Turkey; Sao Paulo, Brazil; and Gurugram, India.[7]
“DevOps is the buzzword these days in both software and business circles. Why? Because it has revolutionized the way modern businesses do business and, in the process, achieved milestones that weren’t possible before.” On this site, “you’ll learn what DevOps is, how it evolved, how your business can benefit from implementing it, and success stories of some of the world’s biggest and most popular companies that have embraced DevOps as part of their business.” (DMH)
“DevOps – or Development and Operations – is a term used in enterprise software development that refers to a kind of agile relationship between information technologies (IT) operations and development. The primary objective of DevOps is to optimize this relationship through fostering better collaboration and communication between development and IT operations. In particular, it seeks to integrate and activate important modifications into an enterprise’s production processes as well as to strictly monitor problems and issues as they occur so these can be addressed as soon as possible without having to disrupt other aspects of the enterprise’s operations. By doing so, DevOps can help enterprises register faster turnaround times, increase frequency of deployment of crucial new software or programs, achieve faster average recovery times, increase success rate for newly released programs, and minimize the lead time needed in between modifications or fixes to programs.” (DMH)
“DevOps is crucial for the success of any enterprise because, by nature, enterprises need to segregate business units as individually operating entities for a more efficient system of operations. However, part of such segregation is the tendency to tightly control and guard access to information, processes and management. And this can be a challenge, particularly for the IT operations unit that needs access to key information from all business units in order to provide the best IT service possible for the whole enterprise. Simply put, part of the challenge in segregating business units into individually operating ones that are independent of each other is the relatively slow flow of information to and from such units because of bureaucracy.” (DMH)
“Moving towards an organizational culture based on DevOps – one where the enterprise’s operations units and IT developers are considered as “partners” instead of unrelated units – is an effective way to break down the barriers between them. This is because an enterprise whose culture is based on DevOps is one that can help IT personnel provide organization with the best possible software with the least risk for glitches, hitches, or problems. Therefore, a DevOps-based organizational culture is one that can foster an environment where segregated business units can remain independent but, at the same time, work very well with others in order to optimize the organization’s efficiency and productivity.” (DMH)
DevOps & Microservices Handbook: Non-Programmer’s Guide to DevOps and Microservices
Are you a non-coder looking for insight into DevOps and Microservices Architecture?
As the industry is moving towards maximum digitization there is consensus that DevOps practices help you deliver software faster, more reliably, and with fewer errors.
You may be a consultant, Advisor, Project Manager or a novice into IT industry; after going through this guide you would be able to appreciate DevOps, Microservices and other related concepts like Kanban, Scrum,Agile, SOA, Monolith Architecture, DevOps, Docker, Kubernetes etc.
You would also get to know about the leaders in DevOps and Microservices adoption and impact it had on the overall agility and hyper-growth of the adopters. This book covers the complete lifecycle for your understanding like: Integrating, Testing, Deploying DevOps and Microservices architecture and the Security concerns while deploying it.
I am confident that after going through the book you would be able to navigate the discussion with any stakeholder and take your agenda ahead as per your role. Additionally, if you are new to the industry, and looking for an application development job, this book will help you to prepare with all the relevant information and understanding of the topic.
Infrastructure as code (IaC) is the process of managing and provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools.[1] The IT infrastructure managed by this process comprises both physical equipment, such as bare-metal servers, as well as virtual machines, and associated configuration resources. The definitions may be in a version control system. It can use either scripts or declarative definitions, rather than manual processes, but the term is more often used to promote declarative approaches.
Overview
IaC grew as a response to the difficulty posed by utility computing and second-generation web frameworks. In 2006, the launch of Amazon Web Services’ Elastic Compute Cloud and the 1.0 version of Ruby on Rails just months before[2] created widespread scaling problems in the enterprise that were previously experienced only at large, multi-national companies.[3] With new tools emerging to handle this ever growing field, the idea of IaC was born. The thought of modelling infrastructure with code, and then having the ability to design, implement, and deploy applications infrastructure with known software best practices appealed to both software developers and IT infrastructure administrators. The ability to treat infrastructure like code and use the same tools as any other software project would allow developers to rapidly deploy applications.[4]
Added value and advantages
The value of IaC can be broken down into three measurable categories: cost, speed, and risk.[citation needed] Cost reduction aims at helping not only the enterprise financially, but also in terms of people and effort, meaning that by removing the manual component, people are able to refocus their efforts towards other enterprise tasks.[citation needed] Infrastructure automation enables speed through faster execution when configuring your infrastructure and aims at providing visibility to help other teams across the enterprise work quickly and more efficiently. Automation removes the risk associated with human error, like manual misconfiguration; removing this can decrease downtime and increase reliability. These outcomes and attributes help the enterprise move towards implementing a culture of DevOps, the combined working of development and operations.[5]
Types of approaches
There are generally two approaches to IaC: declarative (functional) vs. imperative (procedural). The difference between the declarative and the imperative approach is essentially ‘what’ versus ‘how’ . The declarative approach focuses on what the eventual target configuration should be; the imperative focuses on how the infrastructure is to be changed to meet this.[6] The declarative approach defines the desired state and the system executes what needs to happen to achieve that desired state. Imperative defines specific commands that need to be executed in the appropriate order to end with the desired conclusion. [7]
Methods
There are two methods of IaC: ‘push‘ and ‘pull‘ . The main difference is the manner in which the servers are told how to be configured. In the pull method the server to be configured will pull its configuration from the controlling server. In the push method the controlling server pushes the configuration to the destination system.[8]
Tools
There are many tools that fulfill infrastructure automation capabilities and use IaC. Broadly speaking, any framework or tool that performs changes or configures infrastructure declaratively or imperatively based on a programmatic approach can be considered IaC.[9] Traditionally, server (lifecycle) automation and configuration management tools were used to accomplish IaC. Now enterprises are also using continuous configuration automation tools or stand-alone IaC frameworks, such as Microsoft’s PowerShell DSC[10] or AWS CloudFormation.[11]
Continuous configuration automation
All continuous configuration automation (CCA) tools can be thought of as an extension of traditional IaC frameworks. They leverage IaC to change, configure, and automate infrastructure, and they also provide visibility, efficiency and flexibility in how infrastructure is managed.[3] These additional attributes provide enterprise-level security and compliance.
An important aspect when considering CCA tools, if they are open source, is the community content. As Gartner states, the value of CCA tools is “as dependent on user-community-contributed content and support as it is on the commercial maturity and performance of the automation tooling.”[3] Vendors like Puppet and Chef, those that have been around a significant amount of time, have created their own communities. Chef has Chef Community Repository and Puppet has PuppetForge.[12] Other vendors rely on adjacent communities and leverage other IaC frameworks such as PowerShell DSC.[10] New vendors are emerging that are not content driven, but model driven with the intelligence in the product to deliver content. These visual, object-oriented systems work well for developers, but they are especially useful to production oriented DevOps and operations constituents that value models versus scripting for content. As the field continues to develop and change, the community based content will become ever important to how IaC tools are used, unless they are model driven and object oriented.
IaC can be a key attribute of enabling best practices in DevOps – Developers become more involved in defining configuration and Ops teams get involved earlier in the development process.[13] Tools that utilize IaC bring visibility to the state and configuration of servers and ultimately provide the visibility to users within the enterprise, aiming to bring teams together to maximize their efforts.[14] Automation in general aims to take the confusion and error-prone aspect of manual processes and make it more efficient, and productive. Allowing for better software and applications to be created with flexibility, less downtime, and an overall cost effective way for the company. IaC is intended to reduce the complexity that kills efficiency out of manual configuration. Automation and collaboration are considered central points in DevOps; Infrastructure automation tools are often included as components of a DevOps toolchain.[15]
Relationship to security
The 2020 Cloud Threat Report released by Unit 42 (the threat intelligence unit of cybersecurity provider Palo Alto Networks) identified around 200,000 potential vulnerabilities in infrastructure as code templates.[16]
^ Garner Market Trends: DevOps – Not a Market, but Tool-Centric Philosophy That supports a Continuous Delivery Value Chain (Report). Gartner. 18 February 2015.
In software engineering, software configuration management (SCM or S/W CM) is the task of tracking and controlling changes in the software, part of the larger cross-disciplinary field of configuration management.[1] SCM practices include revision control and the establishment of baselines. If something goes wrong, SCM can determine what was changed and who changed it. If a configuration is working well, SCM can determine how to replicate it across many hosts.
The acronym “SCM” is also expanded as source configuration management process and software change and configuration management.[2] However, “configuration” is generally understood to cover changes typically made by a system administrator.
Configuration control – Implementing a controlled change process. This is usually achieved by setting up a change control board whose primary function is to approve or reject all change requests that are sent against any baseline.
Configuration status accounting – Recording and reporting all the necessary information on the status of the development process.
Configuration auditing – Ensuring that configurations contain all their intended parts and are sound with respect to their specifying documents, including requirements, architectural specifications and user manuals.
Build management – Managing the process and tools used for builds.
Process management – Ensuring adherence to the organization’s development process.
Environment management – Managing the software and hardware that host the system.
Teamwork – Facilitate team interactions related to the process.
Defect tracking – Making sure every defect has traceability back to the source.
With the introduction of cloud computing the purposes of SCM tools have become merged in some cases. The SCM tools themselves have become virtual appliances that can be instantiated as virtual machines and saved with state and version. The tools can model and manage cloud-based virtual resources, including virtual appliances, storage units, and software bundles. The roles and responsibilities of the actors have become merged as well with developers now being able to dynamically instantiate virtual servers and related resources.[3]
History
The history of software configuration management (SCM) in computing can be traced back as early as the 1950s, when CM (for Configuration Management), originally for hardware development and production control, was being applied to software development. Early software had a physical footprint, such as cards, tapes, and other media. The first software configuration management was a manual operation. With the advances in language and complexity, software engineering, involving configuration management and other methods, became a major concern due to issues like schedule, budget, and quality. Practical lessons, over the years, had led to the definition, and establishment, of procedures and tools. Eventually, the tools became systems to manage software changes.[4] Industry-wide practices were offered as solutions, either in an open or proprietary manner (such as Revision Control System). With the growing use of computers, systems emerged that handled a broader scope, including requirements management, design alternatives, quality control, and more; later tools followed the guidelines of organizations, such as the Capability Maturity Model of the Software Engineering Institute.
Aiello, R. (2010). Configuration Management Best Practices: Practical Methods that Work in the Real World (1st ed.). Addison-Wesley. ISBN0-321-68586-5.
Babich, W.A. (1986). Software Configuration Management, Coordination for Team Productivity. 1st edition. Boston: Addison-Wesley
Bersoff, E.H. (1997). Elements of Software Configuration Management. IEEE Computer Society Press, Los Alamitos, CA, 1-32
Dennis, A., Wixom, B.H. & Tegarden, D. (2002). System Analysis & Design: An Object-Oriented Approach with UML. Hoboken, New York: John Wiley & Sons, Inc.
Paul M. Duvall, Steve Matyas, and Andrew Glover (2007). Continuous Integration: Improving Software Quality and Reducing Risk. (1st ed.). Addison-Wesley Professional. ISBN0-321-33638-0.
“This glossary contains definitions related to the DevOps movement. Some definitions explain the meaning of words used to describe how a DevOps culture breaks down silos between software development and operations teams. Other definitions are related to the software tools that DevOps engineers use to lower costs, achieve higher productivity and automate tasks.
12 factor app (twelve-factor app) – “Twelve-factor app is a methodology for building distributed applications that run in the cloud and are delivered as a service.” (809137TTG-DvOp)
A/B testing (split testing) – “A/B testing, sometimes called split testing, is an assessment tool for identifying which version of something helps an individual or organization meet a business goal more effectively.” (809137TTG-DvOp)
acceptance testing – “An acceptance test confirms that an story is complete by matching a user action scenario with a desired outcome.”
ad hoc testing – “Ad hoc testing is a non-methodical approach to assessing the viability of a product.” (809137TTG-DvOp)
Agile Project Management – “Agile Project Management (APM) is an iterative approach to planning and guiding project processes, that breaks it down into smaller cycles called sprints.” (809137TTG-DvOp)
Agile Software Development – “Agile software development — also referred to simply as Agile — is a type of development methodology that anticipates the need for flexibility and applies a level of pragmatism to the delivery of the finished product.” (809137TTG-DvOp)
agile test automation pyramid – “The agile test automation pyramid is a graphical strategy guide for implementing automated software testing.”
Agile velocity – “Agile velocity is a metric that predicts how much work a software development team can successfully complete within a two-week sprint (or similar time-boxed period).” (809137TTG-DvOp)
AIOps (artificial intelligence for IT operations) – “AIOps is an umbrella term for the use of big data analytics, machine learning and other AI technologies to automate the identification and resolution of common IT issues.” (809137TTG-DvOp)
Amazon EBS (Elastic Block Store) – “Amazon Elastic Block Store is a cloud-based block storage system provided by Amazon Web Services (AWS) that is best used for storing persistent data.” (809137TTG-DvOp)
Amazon Elastic Container Service (Amazon ECS) – “Amazon Elastic Container Service (ECS) is a cloud computing service in Amazon Web Services (AWS) that manages containers and allows developers to run applications in the cloud without having to configure an environment for the code to run in.” (809137TTG-DvOp)
Amazon Simple Database Service (SimpleDB) – “Amazon Simple Database Service (SimpleDB), also known as a key value data store, is a highly available and flexible non-relational database that allows developers to request and store data, with minimal database management and administrative responsibility.” (809137TTG-DvOp)
Amazon SWF (Simple WorkFlow Service) – “Amazon SWF (Simple Workflow Service) is an Amazon Web Services tool that helps developers coordinate, track and audit multi-step, multi-machine application jobs.” (809137TTG-DvOp)
Amazon Web Services (AWS) – “AWS (Amazon Web Services) is a comprehensive, evolving cloud computing platform provided by Amazon that includes a mixture of infrastructure as a service (IaaS), platform as a service (PaaS) and packaged software as a service (SaaS) offerings.” (809137TTG-DvOp)
Ansible – “Ansible is an open source IT configuration management (CM) and automation platform, provided by Red Hat.” (809137TTG-DvOp)
Ansible playbook – “An Ansible playbook is an organized unit of scripts that defines work for a server configuration managed by the automation tool Ansible.” (809137TTG-DvOp)
Apache HBase – “Apache HBase is a column-oriented key/value data store built to run on top of the Hadoop Distributed File System (HDFS).” (809137TTG-DvOp)
Apache ZooKeeper – “Apache ZooKeeper is an open source file application program interface (API) that allows distributed processes in large systems to synchronize with each other so that all clients making requests receive consistent data.” (809137TTG-DvOp)
AppBuilder – “AppBuilder is an application development tool that takes advantage of reusable HTML5/Java Script to let developers create cross-platform applications that work seamlessly on iOS, Android or Windows Phones.” (809137TTG-DvOp)
application containerization (app containerization) – “Application containerization is an OS-level virtualization method used to deploy and run distributed applications without launching an entire virtual machine (VM) for each app.” (809137TTG-DvOp)
application monitoring and management (AMM) – “Application monitoring and management is the administrative area and associated tools involved with overseeing the operation of business software and ensuring that it functions and performs as expected.” (809137TTG-DvOp)
application release automation (ARA) – “Application release automation (ARA) is a process that packages and deploys an application, or application updates, through the stages of development to production automatically.” (809137TTG-DvOp)
artifact (software development) – “An artifact, in software development, is work that has been documented and stored in a repository so it can be retrieved upon demand.” (809137TTG-DvOp)
automated testing – “Automated testing is a process that validates if software is functioning appropriately and meeting requirements before it is released into production.” (809137TTG-DvOp)
AutoRABIT – “AutoRABIT is an end-to-end release management suite specifically aimed at streamlining the development and release of Salesforce.” (809137TTG-DvOp)
AWS CodeBuild – “AWS CodeBuild is a managed cloud service that enables an IT developer to automate and manage server builds for applications that reside in the Amazon Web Services (AWS) public cloud.” (809137TTG-DvOp)
AWS CodeDeploy (Amazon Web Services CodeDeploy) – “AWS CodeDeploy is a service that automates code deployments to Elastic Compute Cloud (EC2) and on-premises servers.” (809137TTG-DvOp)
AWS CodePipeline (Amazon Web Services CodePipeline) – “AWS CodePipeline is an Amazon Web Services product that automates the software deployment process, allowing a developer to quickly model, visualize and deliver code for new features and updates.” (809137TTG-DvOp)
AWS Command Line Interface – “The AWS Command Line Interface (AWS CLI) is an Amazon Web Services tool that enables developers to control Amazon public cloud services by typing commands on a specified line.” (809137TTG-DvOp)
AWS OpsWorks (Amazon Web Services OpsWorks) – “AWS OpsWorks is a cloud computing service from Amazon Web Services (AWS) that manages infrastructure deployment for cloud administrators.” (809137TTG-DvOp)
Azure DevOps (formerly Visual Studio Team Services) – “Visual Studio Team Services (VSTS) — rebranded as Azure DevOps in 2018 — is an Azure cloud-hosted extension of Microsoft’s Team Foundation Server (TFS) — now called Azure DvOps — that assist development teams with special tools and services for software programmers, analysts and testers as well as IT project or team managers.” (809137TTG-DvOp)
Azure Service Fabric – “Azure Service Fabric is a Platform as a Service (PaaS) offering designed to facilitate the development, deployment and management of highly-scalable and customizable applications for the Microsoft Azure cloud platform.” (809137TTG-DvOp)
behavior-driven development (BDD) – “Behavior-driven development (BDD) is an Agile software development methodology in which an application is documented and designed around the behavior a user expects to experience when interacting with it.” (809137TTG-DvOp)
beta test – “In software development, a beta test is the second phase of software testing in which a sampling of the intended audience tries the product out.” (809137TTG-DvOp)
BizDevOps (Business, Development and Operations) – “BizDevOps, also known as DevOps 2.” (809137TTG-DvOp)
black box (black box testing) – “Black box testing assesses a system solely from the outside, without the operator or tester knowing what is happening within the system to generate responses to test actions.” (809137TTG-DvOp)
blue/green deployment – “A blue/green deployment is a software deployment strategy that relies on two identical production configurations that alternate between active and inactive.” (809137TTG-DvOp)
branching – “Branching is the practice of creating copies of programs or objects in development to work in parallel versions, retaining the original and working on the branch or making different changes to each.” (809137TTG-DvOp)
build – “In a programming context, a build is a version of a program.” (809137TTG-DvOp)
build tool – “A build tool is a programming utility that automates a software build task, such as ensuring that the proper source code files are compiled and that the proper object files are linked, after changes have been made to a program.” (809137TTG-DvOp)
burn down chart – “A burn down chart is a visual representation of the amount of work that still needs to be completed before the end of a project.” (809137TTG-DvOp)
canary test (canary deployment) – “In software development, a canary is an approach to progressive deployment in which code changes are rolled out to a small number of users who have not volunteered or opted-in for testing.” (809137TTG-DvOp)
Cassandra (Apache Cassandra) – “Apache Cassandra is an open source distributed database system that is designed for storing and managing large amounts of data across commodity servers.” (809137TTG-DvOp)
change control – “Change control is a systematic approach to managing all changes made to a product or system.” (809137TTG-DvOp)
ChatOps – “ChatOps is the use of chat clients, chatbots and real-time communication tools to facilitate how software development and operation tasks are communicated and executed.” (809137TTG-DvOp)
Chef (software) – “Chef is an open source systems management and cloud infrastructure automation platform.” (809137TTG-DvOp)
Cloud Foundry – “Cloud Foundry is an open source cloud platform as a service (PaaS) on which developers can build, deploy, run and scale applications on public and private cloud models.” (809137TTG-DvOp)
cloud IDE – “A cloud IDE is a web-based integrated development platform (IDE) that is accessed through a browser.” (809137TTG-DvOp)
cloud orchestration (cloud orchestrator) – “Cloud orchestration is the use of programming technology to manage the interconnections and interactions among workloads on public and private cloud infrastructure.” (809137TTG-DvOp)
cloud testing – “Cloud testing, also called cloud-based testing, is the assessment of a Web application’s performance, reliability, scalability and security in a third-party’s cloud computing environment.” (809137TTG-DvOp)
CloudStack – “Apache CloudStack is an open source infrastructure as a service (IaaS) platform that allows IT service providers to offer public cloud services.” (809137TTG-DvOp)
CMDB (configuration management database) – “A configuration management database (CMDB) is a database that contains all relevant information about the hardware and software components used in an organization’s IT services and the relationships between those components.” (809137TTG-DvOp)
code review – “Code review is a phase in the computer program development process in which the authors of code, peer reviewers, and perhaps quality assurance reviewers get together to review code, line by line.” (809137TTG-DvOp)
codebase (code base) – “A codebase (sometimes spelled as two words, code base) is the complete body of source code for a given software program or application.” (809137TTG-DvOp)
command line interface (CLI) – “A command line interface (CLI) is a text-based user interface (UI) used to view and manage computer files.” (809137TTG-DvOp)
composable infrastructure – “A composable infrastructure is a framework whose physical compute, storage and network fabric resources are treated as services.” (809137TTG-DvOp)
Concurrent Versions System (CVS) – “CVS also is an abbreviation for Computer Vision Syndrome.” (809137TTG-DvOp)
configuration drift – “Configuration drift occurs naturally in data center environments when changes to software and hardware are not recorded or tracked in a comprehensive and systematic fashion.” (809137TTG-DvOp)
Container Linux by CoreOS – “Container Linux by CoreOS, originally named CoreOS Linux, is an open source operating system (OS) that provides the functionality required to deploy and manage applications within containers.” (809137TTG-DvOp)
Container management – “Container management refers to a set of practices that govern and maintain containerization software, and automate the creation, deployment, destruction and scaling of software or systems containers.” (809137TTG-DvOp)
Containers as a Service (CaaS) – “Containers as a service (CaaS) is a cloud service that allows software developers to upload, organize, run, scale, manage and stop containers by using a provider’s API calls or a web portal interface.” (809137TTG-DvOp)
continuous deployment – “Continuous deployment is a strategy for software releases wherein any code commit that passes the automated testing phase is automatically released into the production environment, making changes that are visible to the software’s users.” (809137TTG-DvOp)
continuous integration (CI) – “Continuous integration (CI) is a software engineering practice in which frequent, isolated changes are immediately tested and reported on when they are added to a larger code base.” (809137TTG-DvOp)
continuous software development – “Continuous software development is a blanket term that covers several aspects of an iterative application development process based on making each change when it is ready, rather than wrapping many changes into large batches.” (809137TTG-DvOp)
CoreOS rkt – “CoreOS rkt (pronounced rocket) is a containerization engine to run application workloads in isolation from the underlying infrastructure.” (809137TTG-DvOp)
cowboy coding – “Cowboy coding describes an undisciplined approach to software development.” (809137TTG-DvOp)
cross-functional team – “A cross-functional team is a workgroup made up of employees from different functional areas within an organization who collaborate to reach a stated objective.” (809137TTG-DvOp)
cycle time – “Cycle time is the time, usually measured in nanosecond s, between the start of one random access memory (RAM) access to the time when the next access can be started.” (809137TTG-DvOp)
debugging – “Debugging, in computer programming and engineering, is a multistep process that involves identifying a problem, isolating the source of the problem, and then either correcting the problem or determining a way to work around it.” (809137TTG-DvOp)
definition of done – “A definition of done is a checklist of criteria that a product, product increment or project must satisfy to be considered completed.” (809137TTG-DvOp)
dependency hell – “Dependency hell is a negative situation that occurs when a software application is not able to access the additional programming it requires in order to work.” (809137TTG-DvOp)
DevOps as a Service – “DevOps as a Service is a delivery model for a set of tools that facilitates collaboration between an organization’s software development team and the operations team.” (809137TTG-DvOp)
DevOps certification – “DevOps certification is a formalized testing program intended to ensure that applicants have achieved an appropriate level of skills and knowledge for working in the converged areas of software development and IT operations.” (809137TTG-DvOp)
DevOps Dojo – “DevOps Dojos provide software developers and operations engineers with an immersive learning environment where team members can gain practical work experience without having to worry about introducing errors into the production environment.” (809137TTG-DvOp)
DevOps engineer – “A DevOps engineer is an IT professional who works with software developers, system operators and other production IT staff to create and oversee code releases and deployments.” (809137TTG-DvOp)
distributed tracing – “Distributed tracing, also called distributed request tracing, is a method for IT and DevOps teams to monitor applications, especially those composed of microservices.” (809137TTG-DvOp)
Docker – “Docker is an open source software platform to create, deploy and manage virtualized application containers on a common operating system (OS), with an ecosystem of allied tools.” (809137TTG-DvOp)
Docker Engine – “Docker Engine is the underlying client-server technology that builds and runs containers using Docker’s components and services.” (809137TTG-DvOp)
Docker Hub – “Docker Hub is a cloud-based repository in which Docker users and partners create, test, store and distribute container images.” (809137TTG-DvOp)
Docker Swarm – “Docker Swarm is a clustering and scheduling tool for Docker containers.” (809137TTG-DvOp)
Eclipse (Eclipse Foundation) – “Eclipse is an open source Java Integrated Development Environment (IDE) known for its plug-ins that allow developers to develop and test code written in other programming languages.” (809137TTG-DvOp)
ElasticSearch – “ElasticSearch is an open source, RESTful search engine built on top of Apache Lucene and released under an Apache license.” (809137TTG-DvOp)
Eucalyptus – “Eucalyptus is an open source software platform for implementing Infrastructure as a Service (IaaS) in a private or hybrid cloud computing environment.” (809137TTG-DvOp)
event-driven architecture (EDA) – “An event-driven architecture (EDA) is a framework that orchestrates behavior around the production, detection and consumption of events as well as the responses they evoke.” (809137TTG-DvOp)
fail fast – “Fail fast is a philosophy that values the development or implementation of many small experimental products, changes or approaches before committing large amounts of time or resources.” (809137TTG-DvOp)
forking (software fork) – “Forking is to take the source code from an open source software program and develop an entirely new program.” (809137TTG-DvOp)
fuzz testing (fuzzing) – “Fuzz testing (fuzzing) is a technique used by ethical hackers to discover security loopholes in software, operating systems or networks by massive inputting of random data to the system in an attempt to make it crash.” (809137TTG-DvOp)
Git – “Git is a free and open source distributed code management and version control system that is distributed under the GNU General Public License version 2.” (809137TTG-DvOp)
git stash – “Git stash is a built-in command with the distributed version control tool in Git that locally stores all the most recent changes in a workspace and resets the state of the workspace to the prior commit state.” (809137TTG-DvOp)
GitHub – “GitHub is a web-based revision control hosting service for software development and code sharing.” (809137TTG-DvOp)
Google Bigtable – “Google Bigtable is a distributed, column-oriented data store created by Google Inc.” (809137TTG-DvOp)
Google Cloud Platform (GCP) – “Google Cloud Platform is a suite of public cloud computing services offered by Google.” (809137TTG-DvOp)
Google Kubernetes Engine (GKE) – “Google Kubernetes Engine (GKE) is a management and orchestration system for Docker containers and container clusters that run within Google’s public cloud services.” (809137TTG-DvOp)
gray box testing (gray box) – “Gray box testing, also called gray box analysis, is a strategy for software debugging based on limited knowledge of the internal details of the program.” (809137TTG-DvOp)
Heroku – “Heroku is a cloud-based development platform as a service (PaaS) provider.” (809137TTG-DvOp)
high availability (HA) – “High availability (HA) is the ability of a system or system component to be continuously operational for a desirably long length of time.” (809137TTG-DvOp)
HipChat – “Atlassian HipChat allows employees to collaborate, work as teams and manage goals, all in real time, whether they work in the same office building or are located around the world.” (809137TTG-DvOp)
HP Helion (Hewlett-Packard Helion) – “HP Helion (Hewlett-Packard Helion) is the brand name for HP’s custom distribution] of OpenStack.” (809137TTG-DvOp)
human factors (ergonomics) – “In industry, human factors (also known as ergonomics) is the study of how humans behave physically and psychologically in relation to particular environments, products, or services.” (809137TTG-DvOp)
incremental shift left testing – “Incremental shift left testing is a widely adopted method that starts testing earlier in the development cycle – shifting it to the left on the timeline — and breaks complex development down into smaller pieces that build upon each other.” (809137TTG-DvOp)
Infrastructure as a Service (IaaS) – “Infrastructure as a service (IaaS) is a form of cloud computing that provides virtualized computing resources over the internet.” (809137TTG-DvOp)
infrastructure as code – “Infrastructure as code (IaC) is an approach to software development that treats physical compute, storage and network fabric resources as web services and allows apps to run where they are best suited, based on cost and performance data.” (809137TTG-DvOp)
Internet Information Services (IIS) – “Internet Information Services (IIS) is a flexible, general-purpose web server from Microsoft that runs on Windows systems to serve requested HTML pages or files.” (809137TTG-DvOp)
IT automation – “IT automation is the use of instructions to create a repeated process that replaces an IT professional’s manual work in data centers and cloud deployments.”
iteration – “In agile software development, an iteration is a single development cycle, usually measured as one week or two weeks.” (809137TTG-DvOp)
iterative development – “Iterative development is a way of breaking down the software development of a large application into smaller chunks.” (809137TTG-DvOp)
Java IDE – “Java IDEs typically provide language-specific features in addition to the code editor, compiler and debugger generally found in all IDEs.” (809137TTG-DvOp). Best of the breed is JetBrains InteliJ IDEA.
JBoss – “JBoss is a division of Red Hat that provides support for the JBoss open source application server program and related middleware services marketed under the JBoss Enterprise Middleware brand.” (809137TTG-DvOp)
Jenkins – “Jenkins is an open source continuous integration/continuous delivery and deployment (CI/CD) automation software DevOps tool written in the Java programming language.” (809137TTG-DvOp)
Kaizen (continuous improvement) – “Kaizen is an approach to creating continuous improvement based on the idea that small, ongoing positive changes can reap significant improvements.” (809137TTG-DvOp)
Knative – “Knative is an open source project based on the Kubernetes platform for building, deploying and managing serverless workloads that can run in the cloud, on premises or in a third-party data center.” (809137TTG-DvOp)
Kubernetes – “Kubernetes, also referred to as K8s, is an open source system used to manage Linux Containers across private, public and hybrid cloud environments.” (809137TTG-DvOp)
Kubernetes Pod – “Kubernetes Pods are the smallest deployable computing units in the open source Kubernetes container scheduling and orchestration environment.” (809137TTG-DvOp)
Kubernetes scheduler – “Kubernetes scheduler is a part of the open source Kubernetes container orchestration platform that controls performance, capacity and availability through policies and topology awareness.” (809137TTG-DvOp)
lean software development – “Lean software development is a concept that emphasizes optimizing efficiency and minimizing waste in the development of software.” (809137TTG-DvOp)
lean water spider – “Lean water spider is a term used in manufacturing that refers to a position in a production environment or warehouse that ensures materials are supplied where and when they are needed.” (809137TTG-DvOp)
legacy application – “A legacy application (legacy app) is a software program that is outdated or obsolete.” (809137TTG-DvOp)
Linux Containers Project – “Linux Containers is a project created to provide a distro- and vendor-neutral environment for the development of Linux container technologies.” (809137TTG-DvOp)
longest delay in queue (LDQ) – “Longest delay in queue (LDQ) is the longest time period that a customer in a queue waits before either connecting with an agent or hanging up.” (809137TTG-DvOp)
Memcached – “Memcached is an open source, distributed memory object caching system that alleviates database load to speed up dynamic Web applications.” (809137TTG-DvOp)
microservice architecture (MSA) – “A microservice architecture (MSA) is a logical structure for the design of a software program involving loosely-coupled modular components known as microservices.” (809137TTG-DvOp)
microservices – “Microservices, or microservice architecture, is an approach to application development in which a large application is built as a suite of modular components or services.” (809137TTG-DvOp)
Microsoft Azure – “Microsoft Azure, formerly known as Windows Azure, is Microsoft’s public cloud computing platform.” (809137TTG-DvOp)
Microsoft Azure Stack – “Microsoft Azure Stack is an integrated platform of hardware and software that delivers Microsoft Azure public cloud services in a local data center to let organizations construct hybrid clouds.” (809137TTG-DvOp)
milestone – “In project management, a milestone is a synchronization point.” (809137TTG-DvOp)
mobile application development platform (MADP) – “A mobile application development platform (MADP) is a type of software that allows a business to rapidly build, test and perhaps deploy mobile apps for smartphones and tablets.” (809137TTG-DvOp)
model-based testing – “Model-based testing (MBT) requires a test team to create a second, lightweight implementation of a software build- typically only the business logic – called the model.” (809137TTG-DvOp)
MongoDB – “MongoDB is an open source NoSQL database management program.” (809137TTG-DvOp)
Nagios – “Nagios is an open source monitoring system for computer systems.” (809137TTG-DvOp)
NoOps – “NoOps (no operations) is the concept that an IT environment can become so automated and abstracted from the underlying infrastructure that there is no need for a dedicated team to manage software in-house.” (809137TTG-DvOp) See also SRE – Software Reliability Engineering
OpenConfig – “OpenConfig is a working group and network communication model that attempts to unify standards in networking management interfaces across vendors.” (809137TTG-DvOp)
OpenStack – “OpenStack is a collection of open source software modules that provides a framework to create and manage both public cloud and private cloud infrastructure.” (809137TTG-DvOp)
OpenStack Innovation Center – “The OpenStack Innovation Center is a research and development facility dedicated to the open source cloud platform OpenStack.” (809137TTG-DvOp)
pair programming – “Pair programming is an Agile technique originating from XP in which two developers team together and work on one computer.” (809137TTG-DvOp)
Perforce Software – “Perforce is a software company that specializes in software configuration management, version control and collaboration products.” (809137TTG-DvOp)
performance testing – “Performance testing is the process of determining the speed, responsiveness and stability of a computer, network, software program or device under a workload.” (809137TTG-DvOp)
Platform as a Service (PaaS) – “Platform as a service (PaaS) is a cloud computing model where a third-party provider delivers hardware and software tools to users over the internet.” (809137TTG-DvOp)
poka-yoke – “A poka-yoke is a mechanism that is put in place to prevent human error.” (809137TTG-DvOp)
policy-based management – “Policy-based management is an administrative approach that is used to simplify the management of a given endeavor by establishing policies to deal with situations that are likely to occur.” (809137TTG-DvOp)
PostgreSQL – “PostgreSQL (pronounced “post-gress-Q-L”) is an open source relational database management system (DBMS) developed by a worldwide team of volunteers.” (809137TTG-DvOp)
product backlog grooming – “Product backlog grooming is an Agile software development process in which the development team revisits a pre-defined product backlog, working with stakeholders to prioritize and break the backlog list into user stories for future use.” (809137TTG-DvOp)
product owner – “The product owner is a role in scrum development of the person who represents the business or user community.” (809137TTG-DvOp)
proof of concept (POC) – “A proof of concept (POC) is an exercise in which work is focused on determining whether an idea can be turned into a reality.” (809137TTG-DvOp)
provisioning – “In general, provisioning means “providing” or making something available.” (809137TTG-DvOp)
Puppet (Puppet Labs) – “Puppet is an open source systems management tool for centralizing and automating configuration management.” (809137TTG-DvOp)
Rackspace Cloud – “Cloud provider Rackspace offers several different cloud storage services including Cloud Files, Cloud Block Storage and Cloud Backup.” (809137TTG-DvOp)
Red Hat Mobile Application Platform – “Red Hat Mobile Application Platform is a software development framework that enables organizations to extend their development capabilities to mobile by developing collaboratively, centralizing control of security and using back-end integration with a range of cloud deployments.” (809137TTG-DvOp)
Red Hat OpenShift – “Red Hat OpenShift is a multifaceted, open source container application platform from Red Hat Inc.” (809137TTG-DvOp)
regression testing – “Regression testing is a type of software test that assesses if changes to an application, or other related software components, introduce defects.” (809137TTG-DvOp)
release management – “Release management is a software engineering process intended to oversee the development, testing, deployment and support of software releases.” (809137TTG-DvOp)
release plan – “In agile software development, a release plan is an evolving flowchart that describes which features will be delivered in upcoming releases.” (809137TTG-DvOp)
relentless incrementalism – “Relentless incrementalism is a process in which something substantial is built through the accumulation of small but incessant additions.” (809137TTG-DvOp)
rugged DevOps – “Rugged DevOps is an approach to software development that places a priority on ensuring that code is secure at all stages of the software development lifecycle.” (809137TTG-DvOp)
SAP HANA – “SAP HANA is an in-memory database and application development platform for processing high volumes of data in real time.” (809137TTG-DvOp)
Scrum – “Scrum is a collaborative Agile development framework that breaks large processes down into small pieces in order to streamline efficiency.” (809137TTG-DvOp)
service-level agreement (SLA) – “A service-level agreement (SLA) is a contract between a service provider and its customers that documents what services the provider will furnish and defines the service standards the provider is obligated to meet.” (809137TTG-DvOp)
service-oriented architecture (SOA) – “Service-oriented architecture (SOA) is a software development model that allows services to communicate across different platforms and languages to form applications.” (809137TTG-DvOp)
seven wastes – “The seven wastes are categories of unproductive manufacturing practices identified by Taiichi Ohno, the father of the Toyota Production System (TPS).” (809137TTG-DvOp)
shift left testing – “Shift left testing is an approach used to speed software testing and facilitate development by moving the testing process to an earlier point in the development cycle.” (809137TTG-DvOp)
Simian Army – “The Simian Army is a collection of open source cloud testing tools created by the online video streaming company, Netflix.” (809137TTG-DvOp)
Slack software – “Slack software is a cloud-based collaboration software suite.” (809137TTG-DvOp)
Snort – “Snort is an open source network intrusion detection system (NIDS) created by Martin Roesch.” (809137TTG-DvOp)
software development – “Software development is the body of processes involved in creating software programs, embodying all the stages throughout the systems development life cycle (SDLC).” (809137TTG-DvOp)
software engineering – “Software engineering is the application of principles used in the field of engineering, which usually deals with physical systems, to the design, development, testing, deployment and management of software systems.” (809137TTG-DvOp)
software stack – “A software stack is a collection of independent components that work together to support the execution of an application.” (809137TTG-DvOp)
source code – “Source code is the fundamental component of a computer program that is created by a programmer.” (809137TTG-DvOp)
source code analysis – “Source code analysis is the automated testing of source code for the purpose of debugging a computer program or application before it is distributed or sold.”
specification by example (SBE) – “Specification by example (SBE) is a user-driven contextual approach to defining software requirements.” (809137TTG-DvOp)
sprint (software development) – “A sprint is a set period of time during which specific work has to be completed and made ready for review.” (809137TTG-DvOp)
technical debt – “In software development, technical debt is a metaphor equating Extreme Programming’s incremental, get-something-started approach with the easy acquisition of money through fast loans.” (809137TTG-DvOp)
test-driven development (TDD) – “Test-driven development (TDD), also called test-driven design, is a method of implementing software programming that interlaces unit testing, programming and refactoring on source code.” (809137TTG-DvOp)
The Three Ways (The Phoenix Project) – “The Three Ways is a set of business principles that encourage organizations to value a corporate culture in which feedback loops are short, everyone understands how different parts of the business interrelate and employees are encouraged to continuously learn.” (809137TTG-DvOp)
time-to-live (TTL) – “Time-to-live (TTL) is a value in an Internet Protocol (IP) packet that tells a network router whether or not the packet has been in the network too long and should be discarded.” (809137TTG-DvOp)
Tomcat – “Tomcat is an application server from the Apache Software Foundation that executes Java servlets and renders Web pages that include Java Server Page coding.” (809137TTG-DvOp)
TOSCA (Topology and Orchestration Specification for Cloud Applications) – “The Topology and Orchestration Specification for Cloud Applications (TOSCA) is an open source language used to describe the relationships and dependencies between services and applications that reside on a cloud computing platform.” (809137TTG-DvOp)
unit testing – “Unit testing is a software development process in which the smallest testable parts of an application, called units, are individually and independently scrutinized for proper operation.” (809137TTG-DvOp)
user acceptance testing (UAT) – “In software development, user acceptance testing (UAT)—also called application testing, and end user testing—is a phase of software development in which the software is tested in the “real world” by the intended audience.” (809137TTG-DvOp)
value stream mapping – ” (809137TTG-DvOp)Value stream mapping is a Toyota lean manufacturing visualization tool for documenting all the processes that are required to bring a product to market.” (809137TTG-DvOp)
version control – “Version control (also known as revision control or source control) is a category of processes and tools designed to keep track of multiple different versions of software, content, documents, websites and other information in development.” (809137TTG-DvOp)
Visual Studio .NET – Microsoft’s Visual Studio IDE is most commonly used with C# .NET.
VMware Orchestrator – “VMware Orchestrator is a free vCenter feature that helps automate VMware vCloud Suite, vSphere and other virtualization management system processes.” (809137TTG-DvOp)
water-Scrum-fall – “Water-Scrum-fall is a hybrid approach to application lifecycle management that combines waterfall and Scrum development methodologies.” (809137TTG-DvOp)
waterfall model – “The waterfall model is a linear, sequential approach to the software development life cycle (SDLC) that is popular in software engineering and product development and emphasizes a logical progression of steps.” (809137TTG-DvOp)
WebLogic – “BEA Systems’ WebLogic is a server software application that runs on a middle tier, between back-end databases and related applications and browser-based thin clients.” (809137TTG-DvOp)
WebSphere Development Studio Client (WDSC) – “WebSphere Development Studio Client (WDSC) is a set of application development tools designed for the IBM (International Business Machines) iSeries server.” (809137TTG-DvOp)
white box testing – “White box testing is a software testing methodology in which the code structure is known and understood by the tester.” (809137TTG-DvOp)
whole-team approach (team-based approach) – “Whole-team approach, also called team-based approach, is a strategy for project management in which everyone on the project team is held equally responsible for the quality and success of the project.” (809137TTG-DvOp)
workflow – “Workflow is the series of activities that are necessary to complete a task.” (809137TTG-DvOp)
YAML (YAML Ain’t Markup Language) – “YAML (YAML Ain’t Markup Language) is a data-oriented language structure used as the input format for diverse software applications.” (809137TTG-DvOp)
Yet another Setup Tool (YaST) – “YaST handles much of the administration load, offers a simple graphical interface and sets up setting system parameters easily.” (809137TTG-DvOp)
Zabbix – “Zabbix is an open source monitoring software tool for diverse IT components, including networks, servers, virtual machines (VMs) and cloud services.” (809137TTG-DvOp)
block A dataset. Amazon EMR breaks large amounts of data into subsets. Each subset is called a data block. Amazon EMR assigns an ID to each block and uses a hash table to keep track of block processing.