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

What's hot

Accelerating development velocity of production ml systems with docker
Accelerating development velocity of production ml systems with dockerAccelerating development velocity of production ml systems with docker
Accelerating development velocity of production ml systems with docker
Docker, Inc.
 

What's hot (20)

CS meetup 2020 - Introduction to DevOps
CS meetup 2020 - Introduction to DevOpsCS meetup 2020 - Introduction to DevOps
CS meetup 2020 - Introduction to DevOps
 
DevOps Fest 2020. Сергей Абаничев. Modern CI\CD pipeline with Azure DevOps
DevOps Fest 2020. Сергей Абаничев. Modern CI\CD pipeline with Azure DevOpsDevOps Fest 2020. Сергей Абаничев. Modern CI\CD pipeline with Azure DevOps
DevOps Fest 2020. Сергей Абаничев. Modern CI\CD pipeline with Azure DevOps
 
Microsoft and DevOps - Presented by Atidan
Microsoft and DevOps - Presented by AtidanMicrosoft and DevOps - Presented by Atidan
Microsoft and DevOps - Presented by Atidan
 
Azure DevOps Presentation
Azure DevOps PresentationAzure DevOps Presentation
Azure DevOps Presentation
 
Managing the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS LambdaManaging the Continuous Delivery of Code to AWS Lambda
Managing the Continuous Delivery of Code to AWS Lambda
 
Neotys PAC - Ian Molyneaux
Neotys PAC - Ian MolyneauxNeotys PAC - Ian Molyneaux
Neotys PAC - Ian Molyneaux
 
DevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and ProcessesDevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and Processes
 
Kubernetes: A Top Notch Automation Solution
Kubernetes: A Top Notch Automation SolutionKubernetes: A Top Notch Automation Solution
Kubernetes: A Top Notch Automation Solution
 
Accelerating development velocity of production ml systems with docker
Accelerating development velocity of production ml systems with dockerAccelerating development velocity of production ml systems with docker
Accelerating development velocity of production ml systems with docker
 
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
 
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4CloudDevOps Digital Transformation: A real life use case enabled by Alien4Cloud
DevOps Digital Transformation: A real life use case enabled by Alien4Cloud
 
Devops as a service
Devops as a serviceDevops as a service
Devops as a service
 
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
Introduction Asp.Net MVC5 |MVC5 Tutorial for Beginners & Advanced | Dot Net T...
 
AWS Webcast - Continuous integration with AWS and Ravello
AWS Webcast - Continuous integration with AWS and RavelloAWS Webcast - Continuous integration with AWS and Ravello
AWS Webcast - Continuous integration with AWS and Ravello
 
Introduction to Azure DevOps
Introduction to Azure DevOpsIntroduction to Azure DevOps
Introduction to Azure DevOps
 
Continuous Testing
Continuous TestingContinuous Testing
Continuous Testing
 
Service Virtualization - Kalpna
Service Virtualization - KalpnaService Virtualization - Kalpna
Service Virtualization - Kalpna
 
Creating Event Driven Serverless Applications - Sandeep - Adobe - Serverless ...
Creating Event Driven Serverless Applications - Sandeep - Adobe - Serverless ...Creating Event Driven Serverless Applications - Sandeep - Adobe - Serverless ...
Creating Event Driven Serverless Applications - Sandeep - Adobe - Serverless ...
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric
 

Viewers also liked

Automate Your Software Development Life Cycle Using the Right Tools
Automate Your Software Development Life Cycle Using the Right ToolsAutomate Your Software Development Life Cycle Using the Right Tools
Automate Your Software Development Life Cycle Using the Right Tools
Info-Tech Research Group
 
Dynamic access control sbc12 - thuan nguyen
Dynamic access control sbc12 - thuan nguyenDynamic access control sbc12 - thuan nguyen
Dynamic access control sbc12 - thuan nguyen
Thuan Ng
 

Viewers also liked (20)

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

Similar to How to Triple Your Speed of Development Using Automation

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

Pivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platformPivotal CloudFoundry on Google cloud platform
Pivotal CloudFoundry on Google cloud platform
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open Source
 
DevOps on AWS
DevOps on AWSDevOps on AWS
DevOps on AWS
 
Introduction to Azure Functions
Introduction to Azure FunctionsIntroduction to Azure Functions
Introduction to Azure Functions
 
NetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & ContainersNetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & Containers
 
Platform as a Service (PaaS) - A cloud service for Developers
Platform as a Service (PaaS) - A cloud service for Developers Platform as a Service (PaaS) - A cloud service for Developers
Platform as a Service (PaaS) - A cloud service for Developers
 
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
Serverless - DevOps Lessons Learned From Production
Serverless - DevOps Lessons Learned From ProductionServerless - DevOps Lessons Learned From Production
Serverless - DevOps Lessons Learned From Production
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015
 
MuleSoft Manchester Meetup #4 slides 11th February 2021
MuleSoft Manchester Meetup #4 slides 11th February 2021MuleSoft Manchester Meetup #4 slides 11th February 2021
MuleSoft Manchester Meetup #4 slides 11th February 2021
 
Crio.do - Deployment on AWS Masterclass
Crio.do - Deployment on AWS MasterclassCrio.do - Deployment on AWS Masterclass
Crio.do - Deployment on AWS Masterclass
 
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
MuleSoft Surat Virtual Meetup#15 - Caching Scope, Caching Strategy and Jenkin...
 
Anypoint new features_coimbatore_mule_meetup
Anypoint new features_coimbatore_mule_meetupAnypoint new features_coimbatore_mule_meetup
Anypoint new features_coimbatore_mule_meetup
 
PyConIE 2017 Writing and deploying serverless python applications
PyConIE 2017 Writing and deploying serverless python applicationsPyConIE 2017 Writing and deploying serverless python applications
PyConIE 2017 Writing and deploying serverless python applications
 
SRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver FasterSRV312 DevOps on AWS: Building Systems to Deliver Faster
SRV312 DevOps on AWS: Building Systems to Deliver Faster
 
Agile Integration Workshop
Agile Integration WorkshopAgile Integration Workshop
Agile Integration Workshop
 
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference ArchitectureMRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
MRA AMA Part 10: Kubernetes and the Microservices Reference Architecture
 
AWS Well-Architected Framework (nov 2017)
AWS Well-Architected Framework (nov 2017)AWS Well-Architected Framework (nov 2017)
AWS Well-Architected Framework (nov 2017)
 
Best of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentationBest of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentation
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 

Recently uploaded (20)

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 

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