DevOps in AWS

Continuous Intergration is;

  • Changes to code automatically deployed to mainline branch
  • Make changes to code, and deployments iterative, not monolithic
  • Bugs are detected quickly
  • Help automate deployments
  • Allows rapid deployment and development

Steps in DevOps

  • You are the developer, writing the code. You have the source code control tool (could be github etc.) that you store your code
  • You have the Continuous Integration Server (could be Jenkins, AWS Codepipeline)
  • Project Management Software: Keeps track of your tasks, next sprints.
  • You pick your tasks from the project management software.
  • You submit your code to complete your task.
  • This will automatically trigger a “build” or recurrent builds that you pre-define. The way that build works is your continuous integration server fetches the code from version control tool, it runs tests (functional, unit and security) on that. You see the results of the test on project management server
  • The output from continuous integration server will include documentation, binaries & packages and dev facing notifications.
  • Immutable Infrastructure: Instead of updating the same instances, you build new instances, new whole stack with CloudFormation. You can build a new copy of it instead of updating existing current instances. Also, you can bring up Docker containers too. From a security perspective;
  • If something happens to your instances, that’s ok you will deploy a new stack anyway. Old instances stay there safely.

Cloud Software Development Lifecycle

  • Code - Build - Test - Deploy - Provision - Monitor
  • For Deploy, Provision and Monitor; AWS services to use are AWS Elastic Beanstalk, AWS OpsWork (Chef recipes), AWS CloudFormation and Amazon CloudWatch
  • For Code, Build and Test;
    • AWS CodeCommit: Private Git Hosting hosted on AWS S3 - Full Git compatibility.
    • AWS CodePipeline: Model and visualise custom releases workflow (source -> build -> beta -> gamma -> prod) (Continuous Delivery)
    • AWS CodeDeploy: Rolling updates with no downtime. Auto-scaling integration and it works with any application. You can also re-use existing setup tools (Bash, Powershell, Chef, Puppet)