Introduction
                  
                    Over the past few years, we have seen more and more
                    organizations of every size trying to adopt DevOps practices.
                    Successfully implementing DevOps practices is not easy.
                    Depending on the company's size, it can take several months or
                    even years. Every company has its own unique history, culture,
                    and way of working, and thus will implement it differently.
                    Today we will look how AWS provides various tools to help us
                    adopting to DevOps easily.
                  
                  
                    Suppose we want to create an application with microservices
                    architecture and deploy it to servers. We want to implement
                    this using DevOps practices. Let's see all the services AWS
                    provides which will help us in fulfilling these requirements.
                  
                  AWS CodeStar
                  
                    AWS CodeStar service enables us to develop, build, and deploy
                    applications on AWS. We can perform all the tasks in any
                    software development like project management, development,
                    integrated issue tracking, deployment, all in one place. We
                    can deploy entire continuous delivery toolchain in minutes.
                    Another perk is that here is no additional charge for using
                    AWS CodeStar. We only pay for AWS resources we use like EC2.
                  
                  
                    We will use this service to setup our code repository and
                    project management dashboard.
                  
                  Features:
                  
                    - 
                      Project templates – Readymade templates for popular
                      languages like Java, JavaScript, Python, Ruby, and PHP. You
                      can deploy on EC2, Lambda, Elastic Beanstalk using these
                      templates.
                    
- 
                      Team access management – With support of IAM, we can manage
                      developer identities and attach various policies to them as
                      per requirements.
                    
- 
                      Hosted Git repository – We don't have to manage code
                      repository as AWS CodeStar is integrated with Github and AWS
                      CodeCommit.
                    
- 
                      Automated continuous delivery pipeline – Faster release
                      cycle. Each project comes pre-configured with an automated
                      pipeline that continuously builds, tests, and deploys your
                      code with each commit.
                    
- 
                      IDE integrations – AWS CodeStar provides integration with
                      Cloud9 (online ide), Visual Studio and Eclipse. So cloud
                      development becomes easy.
                    
- 
                      Central project dashboard – We can easily track and manage
                      our end-to-end development toolchain. We can monitor whole
                      project workflow using this dashoard.
                    
Shortcomings:
                  
                    - 
                      Locked to other AWS services – Sadly AWS CodeStar is tightly
                      integrade with other AWS services like CodeDeploy,
                      CodeCommit etc. Also, we cannot use other hosted git
                      repositories like gitlab.
                    
- 
                      Limited language and framework templates – Though most of
                      the popular language like Java and Python are supported, if
                      you want to develop your application in other less popular
                      languages like Golang and Elixir, support for it is not
                      supported.
                    
AWS EC2 System Manager
                  
                    AWS EC2 System Manager is a service which enables visibility
                    and control of whole infrastructure from single point. With
                    Systems Manager, you can group resources, like Amazon EC2
                    instances, Amazon S3 buckets, by application, view operational
                    data for monitoring and troubleshooting, and act on your
                    groups of resources. We can run single command on all grouped
                    instances without having to take SSH and run command on each
                    instance one by one.
                  
                  
                    In our case, we will need this to patch our production
                    instance time to time without need to manually handle all the
                    instances.
                  
                  Features:
                  
                    - 
                      Resource Groups – Instead of performing operations on
                      resources one by one, we can use system manager to group
                      required resources and then execute actions like Run
                      Command, Patch Manager, etc.
                    
- 
                      Insights Dashboards – System Manager provides a single
                      dashboard for operation data analysis. Otherwise we have to
                      maintain custom dashboard for each operation and handle data
                      ingestion.
                    
- 
                      State Manager – With System Manager we can periodically run
                      an operation on EC2 or on-premise instances. We can define
                      policies through console or can directly use Ansible
                      playbooks which can be stored on GitHub or S3 buckets.
                    
Shortcomings:
                  
                    - 
                      It's good to run simple commands on your EC2 but can become
                      tedious when you need to do some heavy lifting work without
                      taking SSH access.
                    
AWS Config
                  
                    AWS Config continuously monitors and records your AWS resource
                    configurations. We can track relationships and resource
                    dependencies among resources. We can define competency rules
                    in Config for AWS resources to validate if they meet required
                    criteria.
                  
                  
                    We will use this service to monitor whether our production
                    instances have only port 443(https) and if they don't, they
                    will be shown as non-compliant in our Config dashboard.
                  
                  Features:
                  
                    - 
                      Multi-account, multi-region data aggregation – AWS Config
                      can be used to monitor different accounts across all region
                      at a single place. This is very useful as you don't have to
                      login to different accounts or switch regions to know the
                      status of resource compliance rules we set.
                    
- 
                      Configuration history – AWS Config records changes to
                      resources and provides us the configuration history. We can
                      know the exact state of our environment at any point in
                      time.
                    
- 
                      Cloud governance dashboard – AWS Config provides a visual
                      dashboard to spot non-compliant resources and then we can
                      take appropriate action on them. This is very useful for IT
                      Administrators, Security Experts, and Compliance Officers.
                    
AWS X-Ray
                  
                    AWS X-Ray does what its name sounds. It is used as tracing
                    service which help analyze and debug production applications.
                    It is useful in our microservices architecture pattern as
                    X-Ray provides an end-to-end view of requests as they travel
                    through your application. So it is helpful for us as we can
                    trace at exactly what component our request is failing.
                  
                  Features:
                  
                    - 
                      Easy to setup – We only need to install X-Ray agent in the
                      server and integrate the X-Ray SDK with your application.
                    
- 
                      AWS services and database Integrations – X-Ray can also be
                      used to capture request metadata for requests made to MySQL
                      or PostgreSQL. It can also be used with AWS SQS and SNS
                      services.
                    
- 
                      Service map – AWS X-Ray creates a map of services used by
                      our integrated application with trace data. We get a visual
                      view of all the connections between services in the
                      application and aggregated data for each service like
                      average latency and failure rates.
                    
Shortcomings:
                  
                    - 
                      Currently it supports popular but languages Java, Go,
                      Node.js, Python, Ruby, .NET. If you are using any other
                      language for development, then you can't use X-Ray.
                    
                    
                      Managing daily releases of 20+ micro services across
                      different environments has never been a breeze. Thanks to
                      team Flentas for helping us implement automatic release
                      pipelines on cloud."
                    
                    
                      Yogesh Tripathi, Head and VP, COE