Cloud-Native Technology & DevOps in 2020

AWS made significant strides in DevOps in 2019.  At Re:invent 2019, Andy Jassy, CEO of AWS, described four points to this transformation:

  1. Senior leadership team conviction and alignment.
  2. Aggressive top-down goals (faster than they would otherwise do organically).
  3. Train your Builders.
  4. Don’t let paralysis stop you before you start.

AWS provides a set of flexible services designed to enable companies to more rapidly and reliably build and deliver products using AWS and DevOps practices. These services simplify automating software release processes,monitoring your application and infrastructure performance, provisioning and managing infrastructure, and deploying application code. Here are the most important AWS services you can integrate into your DevOps philosophy for a successful and agile 2020.

  • Become Cloud-Native

Getting software to work in the cloud requires a broad set of technology components to work together- when technologies are designed to work with the cloud they are coined as “cloud-native” or “cloud-friendly”. Using technologies that are “Cloud-Native” gives DevOps teams a faster time to market and will be more prevalent as the cloud is adopted by more organizations. Using cloud native technologies also means more innovation, better customer experiences, and boosted automation benefits. Some examples of cloud-native technologies built on DevOps principles would include Kubernetes, docker, containers, microservices and serverless functions that run in cloud environments and are managed through automated CI/CD pipelines. 

Implementing cloud-native technologies has proven necessary for both private and public sector leaders to stay technologically proficient. The U.S. Air Force is one of the most relevant examples of staying competitive with cloud-native technologies and AWS. The U.S Air Force has implemented agile practices and considers adopting “cloud computing.. critical to maintaining our military’s technological advantage”. 

  • Automation 

You can use AWS services to automate manual tasks or processes such as deployments, development & test workflows,container management, and configuration management.  

If you’re hoping to rapidly release new features in 2020, avoid downtime during deployment and update applications easier, AWS CodeDeploy fits your goals. AWS CodeDeploy is a fully managed deployment service that automates software deployments to a variety of compute services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers.  

You can also combine cloud-native technologies to create an automated deployment pipeline. The benefits include the ability to detect changes made to the source repository containing your application and then automatically update your live application. This is possible with AWS CodePipeline, a service that builds, tests, and deploys your code every time there is a code change, combined with a GitHub account, an Amazon Simple Storage Service (S3) bucket, or an AWS CodeCommit repository as the source location for your application’s code.

Screenshot 2020-01-09 at 2.05.33 PM

  •  Containerization 

Software containers are a form of OS virtualization where the running container contains only the minimum memory, services and operating system resources required to run an application or service. Containers enable developers to work with identical development environments and stacks. But they also facilitate DevOps by encouraging the use of stateless designs.  In basic manipulation, the container will integrate commands for starting, stopping, restarting, attaching, and detaching containers. 

Having an in-depth understanding of container manipulations creates an avenue for  running tests by starting containers and disposing of the containers after the test has been completed.

To accomplish this, tools like Dockerode can be used to programmatically manipulate containers and their actions. For example, multiple containers running in a machine can be listed to know which is currently running and the containers in a host. 

AWS offers several ways to manage containers at scale with fully managed services Amazon Elastic Container Registry (ECR), AWS Fargate, Amazon ECS and specific to Kubernetes, Amazon EKS. The below diagram can help you choose which service fits your DevOps goals.


Screenshot 2020-01-09 at 2.14.40 PM

  • Build Securely

DevSecOps relies on the philosophy of integrating security principles into the DevOps process to achieve greater efficiency while building with security in mind. The ability to detect changes in security components in real-time determines the success of most security initiatives in DevOps. There are tools available to DevOps teams to build both visibility and protection into your agile process.

GE used AWS CloudTrail to gain visibility into both API and non-API actions across users’ AWS accounts. Puppet Enterprise or Ansible can be used to manage infrastructure as code by automating the infrastructure management process. 

You can also test for functionality, bugs as dictated by your script using services like Amazon CloudWatch Synthetics. Cloudwatch is a fully managed synthetic monitoring service that allows developers and DevOps engineers to view their application endpoints and URLs using configrable scripts that run 24/7 called “canaries”. The canaries serve to alert you when issues arise according to your script. 

 

DevOps in 2020: Conclusion

Having a DevOps practice that works with the Cloud is critical for agility and competitive relevance in 2020 and beyond. Using cloud native technologies, automation, containerization and building securely with a DevSecOps philosophy can help DevOps teams reach goals faster with fewer errors in 2020.