SlideShare a Scribd company logo
How to Triple Your Speed of Development Using Automation | 26/03/2017
How to Triple Your Speed of
Development Using Automation
Johanan Liebermann
26/03/2017
AWS and GCP Division Overview | Nov. 2016
© 2016 AllCloud
“AWS Managed Service Partners
are skilled at cloud infrastructure
and application migration, and
deliver value to customers by
offering proactive monitoring,
automation, and management of
their customer’s environment.”
https://aws.amazon.com/partners/msp/
http://www.allcloud.io/msp
AWS Next-Gen (v3) Managed Service Partner (MSP)
How to Triple Your Speed of Development Using Automation | 26/03/2017
Johanan Liebermann
Software Developer at AllCloud
johanan.liebermann@allcloud.io
About Me
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Intro
● Using automation to speed up your development
● Two real use cases (instance-based and container-based)
Topics
How to Triple Your Speed of Development Using Automation | 26/03/2017
Intro
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Today’s software world moves fast!
● Tiny startups can challenge giants
● Delivering a product to the masses is easy
● Release cycle takes days, not months
● Time to market can make or break your product
The Need for Speed
How to Triple Your Speed of Development Using Automation | 26/03/2017
How?
How to Triple Your Speed of Development Using Automation | 26/03/2017
Automate Everything!
How to Triple Your Speed of Development Using Automation | 26/03/2017
“A set of practices which make software lifecycle more efficient by
bridging the gap between development and operations and aiming
for automation in every aspect.”
DevOps
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Continuous Integration & Continuous Delivery / Deployment
● A major part of DevOps
● Continually building, testing and deploying your code
● Catch problems as soon as possible
● Work on multiple features in parallel
● Ship code often in small chunks
CI/CD
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Version Control
● Build Process
● Testing
● Configuration Management
● Infrastructure Provisioning
● Deployment & Release
What Areas Can You Automate?
How to Triple Your Speed of Development Using Automation | 26/03/2017
Version Control Managing changes to source
code
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Git hooks
○ Trigger build, test and deploy processes
○ Enforce commit message style
○ Enforce coding standards (can’t commit bad code)
○ Notify developers about code-related events
● Automated handling of branches and pull requests
○ GitHub API
Version Control Automation
How to Triple Your Speed of Development Using Automation | 26/03/2017
Build Process Generating artifacts from
source code
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Build automation tools
○ Make, Maven, Gradle, Grunt, Gulp, Rake...
● Dependency / package managers
○ pip, npm, RubyGems, Conda, Bower...
Build Process Automation
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Your artifacts should be properly-versioned
● Your artifacts should be consistently-available
● Many types of artifacts
○ Language-specific - JAR, Gem
○ OS-specific - RPM, Deb, APK, IPA
○ Images - Docker, Vagrant, AMI
Handling Artifacts
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Dedicated solutions: Artifactory, Nexus, ECR, Docker Hub
● Simple file storage: S3
Artifact Storage Options
How to Triple Your Speed of Development Using Automation | 26/03/2017
Verifying the quality of your
code
Testing
How to Triple Your Speed of Development Using Automation | 26/03/2017
Unit Testing
Types of Testing
Integration Testing
Functional Testing
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Making sure a small, isolated piece of code works properly
● Done as part of the build process
● Unit tests should be an integral part of the code
● A failed unit test should always stop the build process
● Typically done using built-in language features or dedicated
frameworks (JUnit, pytest, rspec…)
● Provides a fast feedback for new code
Unit Testing
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Making sure a couple of components work together properly
● Should be done as part of the deployment / release process
● Usually requires deployment to an environment
● Typically done using dedicated tools or custom scripts
● Typically involves “external” entities such as databases, 3rd party
APIs, managed services etc.
Integration Testing
How to Triple Your Speed of Development Using Automation | 26/03/2017
● End-to-end testing of a product
● Should be done as part of the deployment / release process
● Typically simulates user interaction for front-end applications
using tools such as Selenium and Appium
● Typically simulates API calls for back-end services using tools
such as Ready! API or vREST
Functional Testing
How to Triple Your Speed of Development Using Automation | 26/03/2017
Ensuring your servers are
properly configured to serve
your application
Configuration
Management
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Typically includes:
○ Installing packages
○ Ensuring configuration files are in the desired state
○ Setting OS-level configuration parameters (file permissions, environment
variables...)
○ Configuring services
● Declarative syntax & idempotent in most cases
Configuration Management
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Dedicated tools: Ansible, Chef, Puppet, SaltStack
● Built-in functionality: Dockerfiles, ebextensions
● Custom scripts (not recommended)
Configuration Management Tools
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Two approaches to managing your infrastructure
○ Mutable infrastructure: modifying existing nodes
○ Immutable infrastructure: replacing existing nodes
● Both options are achievable using CM tools
○ Use CM tools to manage your nodes directly
○ Use CM tools to generate images
Mutable vs. Immutable Infrastructure
How to Triple Your Speed of Development Using Automation | 26/03/2017
Infrastructure
Provisioning
Creating, updating and
destroying cloud
infrastructure
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Relevant mainly for IaaS
● Typical resources which need provisioning:
○ Compute resources (EC2, ECS, Lambda)
○ Network & security (VPC, ELB, CloudFront)
○ Databases, cache clusters and queues (RDS, DynamoDB, ElastiCache, SQS)
○ Storage (EBS, EFS, S3)
○ Miscellaneous services (IAM, SNS, SES, CloudWatch...)
Infrastructure Provisioning
How to Triple Your Speed of Development Using Automation | 26/03/2017
● An approach in which infrastructure == code
○ Version-controlled
○ Tested
● Provides reproducibility
● Usually declarative & idempotent
Infrastructure as Code
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Dedicated tools: CloudFormation, Terraform
● Built-in functionality: Elastic Beanstalk, Heroku
Infrastructure Provisioning Tools
How to Triple Your Speed of Development Using Automation | 26/03/2017
Making your code available to
the users
Deployment &
Release
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Back-end services
○ Update or replace instances / containers / Lambda functions
○ Run DB migrations
● Front-end services
○ Run minification & CSS preprocessing
○ Sync S3 buckets
○ Invalidate CDN
Deployment Process
How to Triple Your Speed of Development Using Automation | 26/03/2017
● In-place - simply updating the live nodes
● Canary - deploying to a small amount of nodes first, making sure
everything is fine, then updating all the nodes
● Blue/Green - maintaining two identical production environments
and switching the activity between them
Back-End Deployment Strategies
How to Triple Your Speed of Development Using Automation | 26/03/2017
Sample
Pipeline:
CodeDeploy
How to Triple Your Speed of Development Using Automation | 26/03/2017
● A managed deployment service by AWS
● Handles the deployment process for you
● Minimizes downtime
○ In-place rolling updates
○ Built-in support for Blue/Green deployment
● Automatic or manual rollbacks
● Platform-agnostic: use with any OS, any runtime and any CM
AWS CodeDeploy
How to Triple Your Speed of Development Using Automation | 26/03/2017
● A REST API written in Python on Amazon Linux
● Jenkins as an automation server
● Artifactory for artifact storage
● Ansible for CM
● CodeDeploy for deployment
Pipeline Setup
How to Triple Your Speed of Development Using Automation | 26/03/2017
The Pipeline
2. Run unit tests
3. Build pip package
4. Build Ansible RPM
1. Checkout
5. Store pip & RPM
6. Push new revision
7. Trigger CodeDeploy
8. Deregister from ELB
9. Install RPM using YUM
10. Run Ansible
11. Verify service
12. Register with ELB
Pull RPM & pip - Run pip install
- Modify config files
- Start service
How to Triple Your Speed of Development Using Automation | 26/03/2017
Sample
Pipeline: ECS
How to Triple Your Speed of Development Using Automation | 26/03/2017
● EC2 Container Service
● The native AWS container management service
● Runs on EC2
● Contains a private Docker registry (ECR)
● Native integration with Auto Scaling, ELB and IAM
● ECS is free (but ECR has charges)
AWS ECS
How to Triple Your Speed of Development Using Automation | 26/03/2017
● A REST API written in NodeJS
● Jenkins as an automation server
● ECR for artifact storage
● No need for CM (Docker handles it)
● ECS for deployment
Pipeline Setup
How to Triple Your Speed of Development Using Automation | 26/03/2017
The Pipeline
2. Build Docker image
3. Run unit tests
4. Push image
1. Checkout
5. Update Task
Definition
6. Update Service
7. Replace containers
Pull image
How to Triple Your Speed of Development Using Automation | 26/03/2017
Conclusion
How to Triple Your Speed of Development Using Automation | 26/03/2017
● Implement fully-automated pipelines to leverage the full
potential of the cloud
● Automation will boost your speed of development and allow you
to focus on your differentiating factors
● Relying on managed services wherever possible will reduce the
manpower needed for operating your service and may also
reduce your costs
Conclusion
How to Triple Your Speed of Development Using Automation | 26/03/2017
Thank You!
info@allcloud.io

More Related Content

PDF
RightScale Webinar: Continuous Integration and Delivery in the Cloud - How Ri...
PDF
Helm summit 2019_handling large number of charts_sept 10
PPTX
How kubernetes operators can rescue dev secops in midst of a pandemic updated
PDF
Building scalable applications using serverless on the cloud
PPTX
DevOps – Culture of continuous delivery & collaboration
PDF
Infrastructure as Code
PPTX
Vulnerability Discovery in the Cloud
PDF
Infrastructure as Code Maturity Model v1
RightScale Webinar: Continuous Integration and Delivery in the Cloud - How Ri...
Helm summit 2019_handling large number of charts_sept 10
How kubernetes operators can rescue dev secops in midst of a pandemic updated
Building scalable applications using serverless on the cloud
DevOps – Culture of continuous delivery & collaboration
Infrastructure as Code
Vulnerability Discovery in the Cloud
Infrastructure as Code Maturity Model v1

What's hot (18)

PDF
CS meetup 2020 - Introduction to DevOps
PPTX
DevOps Fest 2020. Сергей Абаничев. Modern CI\CD pipeline with Azure DevOps
PDF
Microsoft and DevOps - Presented by Atidan
PDF
Azure DevOps Presentation
PPTX
Neotys PAC - Ian Molyneaux
PPTX
Kubernetes: A Top Notch Automation Solution
PDF
Accelerating development velocity of production ml systems with docker
PDF
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
PDF
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
PPTX
Devops as a service
PDF
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
PPTX
Introduction to Azure DevOps
PDF
Continuous Testing
PPTX
Service Virtualization - Kalpna
PDF
Creating Event Driven Serverless Applications - Sandeep - Adobe - Serverless ...
PDF
DevOps - A Gentle Introduction
PPTX
.NET microservices with Azure Service Fabric
PDF
Infrastructure as code
CS meetup 2020 - Introduction to DevOps
DevOps Fest 2020. Сергей Абаничев. Modern CI\CD pipeline with Azure DevOps
Microsoft and DevOps - Presented by Atidan
Azure DevOps Presentation
Neotys PAC - Ian Molyneaux
Kubernetes: A Top Notch Automation Solution
Accelerating development velocity of production ml systems with docker
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
Devops as a service
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
Introduction to Azure DevOps
Continuous Testing
Service Virtualization - Kalpna
Creating Event Driven Serverless Applications - Sandeep - Adobe - Serverless ...
DevOps - A Gentle Introduction
.NET microservices with Azure Service Fabric
Infrastructure as code
Ad

Viewers also liked (20)

PPTX
Docker on AWS - the Right Way
PDF
How to protect your IoT data on AWS
PPTX
Automate Your Software Development Life Cycle Using the Right Tools
PPTX
Strategies for Transitioning From SharePoint On-Prem to Office 365
PPTX
Dynamic access control sbc12 - thuan nguyen
PPTX
Integrate with ldap
PPTX
Marketing automation solutions webinar (part 2)
PDF
Developer 2.0
PDF
Machine Learning for Your Enterprise: Operations and Security for Mainframe E...
PPTX
Gentle introduction to Machine Learning
PDF
Introducing Ansible
PPTX
2016 the year of machine learning 12.16.2015
PDF
Placement of BPM runtime components in an SOA environment
PDF
Deloitte BPM case study by WorkflowGen
PDF
IBM Connections 4.5 Integration - From Zero To Social Hero - 2.0 - with Domin...
PPTX
AI & Machine Learning - Webinar Deck
PPTX
ExpertsLive Asia Pacific 2017 - Planning and Deploying SharePoint Server 2016...
PPTX
Practical Strategies to Designing Beautiful Portals
PDF
Machine Learning Application to Manufacturing using Tableau and Google by Pluto7
PPTX
Practical Strategies for Transitioning to Office 365 #sptechcon
Docker on AWS - the Right Way
How to protect your IoT data on AWS
Automate Your Software Development Life Cycle Using the Right Tools
Strategies for Transitioning From SharePoint On-Prem to Office 365
Dynamic access control sbc12 - thuan nguyen
Integrate with ldap
Marketing automation solutions webinar (part 2)
Developer 2.0
Machine Learning for Your Enterprise: Operations and Security for Mainframe E...
Gentle introduction to Machine Learning
Introducing Ansible
2016 the year of machine learning 12.16.2015
Placement of BPM runtime components in an SOA environment
Deloitte BPM case study by WorkflowGen
IBM Connections 4.5 Integration - From Zero To Social Hero - 2.0 - with Domin...
AI & Machine Learning - Webinar Deck
ExpertsLive Asia Pacific 2017 - Planning and Deploying SharePoint Server 2016...
Practical Strategies to Designing Beautiful Portals
Machine Learning Application to Manufacturing using Tableau and Google by Pluto7
Practical Strategies for Transitioning to Office 365 #sptechcon
Ad

Similar to How to Triple Your Speed of Development Using Automation (20)

PPT
Continuous Deployment
PPTX
So you-want-to-go-faster
PDF
DevOps, Common use cases, Architectures, Best Practices
PPTX
DevOps explained
PPTX
DevOps On AWS - Deep Dive on Continuous Delivery
PDF
Path to continuous delivery
PDF
DevOps Transformation: Learnings and Best Practices
PDF
Introduction to DevOps
PDF
Be DevOps Ready
PDF
Intro to DevOps
PDF
MeetingPoint 2015 - Swimming upstream in the container revolution
PDF
Developing PHP Applications Faster
PDF
Increasing pace as you grow: the Amazon Story
PDF
NextBuild 2015 - Swimming upstream in the container revolution
PDF
Swimming upstream in the container revolution
PDF
Software Development 2020 - Swimming upstream in the container revolution
PDF
Cloud Native Dünyada CI/CD
PPTX
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
PPTX
How to go from waterfall app dev to secure agile development in 2 weeks
PDF
Dev Ops without the Ops
Continuous Deployment
So you-want-to-go-faster
DevOps, Common use cases, Architectures, Best Practices
DevOps explained
DevOps On AWS - Deep Dive on Continuous Delivery
Path to continuous delivery
DevOps Transformation: Learnings and Best Practices
Introduction to DevOps
Be DevOps Ready
Intro to DevOps
MeetingPoint 2015 - Swimming upstream in the container revolution
Developing PHP Applications Faster
Increasing pace as you grow: the Amazon Story
NextBuild 2015 - Swimming upstream in the container revolution
Swimming upstream in the container revolution
Software Development 2020 - Swimming upstream in the container revolution
Cloud Native Dünyada CI/CD
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...
How to go from waterfall app dev to secure agile development in 2 weeks
Dev Ops without the Ops

Recently uploaded (20)

PDF
Electronic commerce courselecture one. Pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Encapsulation theory and applications.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Machine learning based COVID-19 study performance prediction
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
Electronic commerce courselecture one. Pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Unlocking AI with Model Context Protocol (MCP)
Chapter 3 Spatial Domain Image Processing.pdf
MYSQL Presentation for SQL database connectivity
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
The Rise and Fall of 3GPP – Time for a Sabbatical?
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Encapsulation theory and applications.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Encapsulation_ Review paper, used for researhc scholars
Machine learning based COVID-19 study performance prediction
Per capita expenditure prediction using model stacking based on satellite ima...
Advanced methodologies resolving dimensionality complications for autism neur...
Building Integrated photovoltaic BIPV_UPV.pdf
20250228 LYD VKU AI Blended-Learning.pptx

How to Triple Your Speed of Development Using Automation

  • 1. How to Triple Your Speed of Development Using Automation | 26/03/2017 How to Triple Your Speed of Development Using Automation Johanan Liebermann 26/03/2017
  • 2. AWS and GCP Division Overview | Nov. 2016 © 2016 AllCloud “AWS Managed Service Partners are skilled at cloud infrastructure and application migration, and deliver value to customers by offering proactive monitoring, automation, and management of their customer’s environment.” https://aws.amazon.com/partners/msp/ http://www.allcloud.io/msp AWS Next-Gen (v3) Managed Service Partner (MSP)
  • 3. How to Triple Your Speed of Development Using Automation | 26/03/2017 Johanan Liebermann Software Developer at AllCloud johanan.liebermann@allcloud.io About Me
  • 4. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Intro ● Using automation to speed up your development ● Two real use cases (instance-based and container-based) Topics
  • 5. How to Triple Your Speed of Development Using Automation | 26/03/2017 Intro
  • 6. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Today’s software world moves fast! ● Tiny startups can challenge giants ● Delivering a product to the masses is easy ● Release cycle takes days, not months ● Time to market can make or break your product The Need for Speed
  • 7. How to Triple Your Speed of Development Using Automation | 26/03/2017 How?
  • 8. How to Triple Your Speed of Development Using Automation | 26/03/2017 Automate Everything!
  • 9. How to Triple Your Speed of Development Using Automation | 26/03/2017 “A set of practices which make software lifecycle more efficient by bridging the gap between development and operations and aiming for automation in every aspect.” DevOps
  • 10. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Continuous Integration & Continuous Delivery / Deployment ● A major part of DevOps ● Continually building, testing and deploying your code ● Catch problems as soon as possible ● Work on multiple features in parallel ● Ship code often in small chunks CI/CD
  • 11. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Version Control ● Build Process ● Testing ● Configuration Management ● Infrastructure Provisioning ● Deployment & Release What Areas Can You Automate?
  • 12. How to Triple Your Speed of Development Using Automation | 26/03/2017 Version Control Managing changes to source code
  • 13. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Git hooks ○ Trigger build, test and deploy processes ○ Enforce commit message style ○ Enforce coding standards (can’t commit bad code) ○ Notify developers about code-related events ● Automated handling of branches and pull requests ○ GitHub API Version Control Automation
  • 14. How to Triple Your Speed of Development Using Automation | 26/03/2017 Build Process Generating artifacts from source code
  • 15. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Build automation tools ○ Make, Maven, Gradle, Grunt, Gulp, Rake... ● Dependency / package managers ○ pip, npm, RubyGems, Conda, Bower... Build Process Automation
  • 16. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Your artifacts should be properly-versioned ● Your artifacts should be consistently-available ● Many types of artifacts ○ Language-specific - JAR, Gem ○ OS-specific - RPM, Deb, APK, IPA ○ Images - Docker, Vagrant, AMI Handling Artifacts
  • 17. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Dedicated solutions: Artifactory, Nexus, ECR, Docker Hub ● Simple file storage: S3 Artifact Storage Options
  • 18. How to Triple Your Speed of Development Using Automation | 26/03/2017 Verifying the quality of your code Testing
  • 19. How to Triple Your Speed of Development Using Automation | 26/03/2017 Unit Testing Types of Testing Integration Testing Functional Testing
  • 20. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Making sure a small, isolated piece of code works properly ● Done as part of the build process ● Unit tests should be an integral part of the code ● A failed unit test should always stop the build process ● Typically done using built-in language features or dedicated frameworks (JUnit, pytest, rspec…) ● Provides a fast feedback for new code Unit Testing
  • 21. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Making sure a couple of components work together properly ● Should be done as part of the deployment / release process ● Usually requires deployment to an environment ● Typically done using dedicated tools or custom scripts ● Typically involves “external” entities such as databases, 3rd party APIs, managed services etc. Integration Testing
  • 22. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● End-to-end testing of a product ● Should be done as part of the deployment / release process ● Typically simulates user interaction for front-end applications using tools such as Selenium and Appium ● Typically simulates API calls for back-end services using tools such as Ready! API or vREST Functional Testing
  • 23. How to Triple Your Speed of Development Using Automation | 26/03/2017 Ensuring your servers are properly configured to serve your application Configuration Management
  • 24. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Typically includes: ○ Installing packages ○ Ensuring configuration files are in the desired state ○ Setting OS-level configuration parameters (file permissions, environment variables...) ○ Configuring services ● Declarative syntax & idempotent in most cases Configuration Management
  • 25. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Dedicated tools: Ansible, Chef, Puppet, SaltStack ● Built-in functionality: Dockerfiles, ebextensions ● Custom scripts (not recommended) Configuration Management Tools
  • 26. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Two approaches to managing your infrastructure ○ Mutable infrastructure: modifying existing nodes ○ Immutable infrastructure: replacing existing nodes ● Both options are achievable using CM tools ○ Use CM tools to manage your nodes directly ○ Use CM tools to generate images Mutable vs. Immutable Infrastructure
  • 27. How to Triple Your Speed of Development Using Automation | 26/03/2017 Infrastructure Provisioning Creating, updating and destroying cloud infrastructure
  • 28. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Relevant mainly for IaaS ● Typical resources which need provisioning: ○ Compute resources (EC2, ECS, Lambda) ○ Network & security (VPC, ELB, CloudFront) ○ Databases, cache clusters and queues (RDS, DynamoDB, ElastiCache, SQS) ○ Storage (EBS, EFS, S3) ○ Miscellaneous services (IAM, SNS, SES, CloudWatch...) Infrastructure Provisioning
  • 29. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● An approach in which infrastructure == code ○ Version-controlled ○ Tested ● Provides reproducibility ● Usually declarative & idempotent Infrastructure as Code
  • 30. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Dedicated tools: CloudFormation, Terraform ● Built-in functionality: Elastic Beanstalk, Heroku Infrastructure Provisioning Tools
  • 31. How to Triple Your Speed of Development Using Automation | 26/03/2017 Making your code available to the users Deployment & Release
  • 32. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Back-end services ○ Update or replace instances / containers / Lambda functions ○ Run DB migrations ● Front-end services ○ Run minification & CSS preprocessing ○ Sync S3 buckets ○ Invalidate CDN Deployment Process
  • 33. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● In-place - simply updating the live nodes ● Canary - deploying to a small amount of nodes first, making sure everything is fine, then updating all the nodes ● Blue/Green - maintaining two identical production environments and switching the activity between them Back-End Deployment Strategies
  • 34. How to Triple Your Speed of Development Using Automation | 26/03/2017 Sample Pipeline: CodeDeploy
  • 35. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● A managed deployment service by AWS ● Handles the deployment process for you ● Minimizes downtime ○ In-place rolling updates ○ Built-in support for Blue/Green deployment ● Automatic or manual rollbacks ● Platform-agnostic: use with any OS, any runtime and any CM AWS CodeDeploy
  • 36. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● A REST API written in Python on Amazon Linux ● Jenkins as an automation server ● Artifactory for artifact storage ● Ansible for CM ● CodeDeploy for deployment Pipeline Setup
  • 37. How to Triple Your Speed of Development Using Automation | 26/03/2017 The Pipeline 2. Run unit tests 3. Build pip package 4. Build Ansible RPM 1. Checkout 5. Store pip & RPM 6. Push new revision 7. Trigger CodeDeploy 8. Deregister from ELB 9. Install RPM using YUM 10. Run Ansible 11. Verify service 12. Register with ELB Pull RPM & pip - Run pip install - Modify config files - Start service
  • 38. How to Triple Your Speed of Development Using Automation | 26/03/2017 Sample Pipeline: ECS
  • 39. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● EC2 Container Service ● The native AWS container management service ● Runs on EC2 ● Contains a private Docker registry (ECR) ● Native integration with Auto Scaling, ELB and IAM ● ECS is free (but ECR has charges) AWS ECS
  • 40. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● A REST API written in NodeJS ● Jenkins as an automation server ● ECR for artifact storage ● No need for CM (Docker handles it) ● ECS for deployment Pipeline Setup
  • 41. How to Triple Your Speed of Development Using Automation | 26/03/2017 The Pipeline 2. Build Docker image 3. Run unit tests 4. Push image 1. Checkout 5. Update Task Definition 6. Update Service 7. Replace containers Pull image
  • 42. How to Triple Your Speed of Development Using Automation | 26/03/2017 Conclusion
  • 43. How to Triple Your Speed of Development Using Automation | 26/03/2017 ● Implement fully-automated pipelines to leverage the full potential of the cloud ● Automation will boost your speed of development and allow you to focus on your differentiating factors ● Relying on managed services wherever possible will reduce the manpower needed for operating your service and may also reduce your costs Conclusion
  • 44. How to Triple Your Speed of Development Using Automation | 26/03/2017 Thank You! info@allcloud.io