webcast: devops in aws is different! how can containers help?
TRANSCRIPT
DevOps in AWS is Different!
How can Containers Help?
Ed Lee Saradhi Sreegiriraju
Feb 2 2017 @ 10:05 PSTVOIP or Dial-in (see chat)
Questions? Hit the GTW chat or @applatix
Who are we?
Ed Lee Saradhi Sreegiriraju
Challenges we address (without the product pitch)
What we will talk about• Warning: Public cloud ≠ private cloud!• To get the benefits of the public cloud, you must operate
differently • How DevOps and containers are critical to success in public
cloud• Our lessons learned in working with containers at scale in AWS
Two important questions in computing• P = NP?
• If true, no fundamental difference between solving a problem and verifying the solution to a problem
• Anyone who could appreciate Mozart, could compose like Mozart
• Answer: Unknown
Two important questions in computing• Public Cloud = Private Cloud?
• If true, no fundamental difference between using public cloud vs. private cloud
• No new skills, tools or processes are needed and there are no special benefits to using public cloud vs. private cloud
• Answer: Public Cloud ≠ Private Cloud
How is Public Cloud Different?
The public cloud is• Programmable (API driven)
• Enables developer self-service
• Huge on-demand marketplace
• New tools and skills
Private cloud
Public Cloud
VMs
Self-serviceSpot instances
Global scale
Agility
ServerlessMicroservices
Auto-scale
A public cloud instance is not a VM!• Public cloud instance is more like a server than a VM
• Lift and shift (right-size instances) ➜ sticker shock (meter is always running)
• How do Google and Facebook get 80% utilization? Containers!
ContainerOn-Premises Public Cloud
VMs Instances
On-premises is driven by silos• Manage a fixed pool of resources
• Ticket-driven operations
• Resource constraints => utilization
Dev
Ops
Infra
40+ tools
VMs
On-Premises
Chef, Puppet, …
Git, Jenkins, …
cmds
CODE
use/operatescripts
Public cloud is driven by APIs• Manage a fixed pool of resources
• Ticket-driven operations
• Resource constraints => utilization
• Infinite, on-demand resources
• Developer self-service via APIs
• Auto-scale => focus on cycle time
Dev
Ops
Infra
40+ tools
VMs
On-Premises
Chef, Puppet, …
Git, Jenkins, …
Public Cloud
Dev Ops
Infra APIscmds
CODE
CODE CODEuse/operate programscripts
Traditional thinking is Resource Constrained“Prioritize projects to use the available fixed resources”
Cloud thinking is Time Constrained “Is this job worth the cost of running it?”
Unshackle your most precious resources – engineers!• An engineer costs $200K/year ➡
$800/work day• 10% for infrastructure ➡ $80/ work day
• $80 on AWS buys• m4.large ➡ 800 instance hours per day• 8 hour day ➡ 100 m4.large instances
• What does this mean? • Think and operate differently in public
cloud• Auto-scaling, bursting, spot instances
provide great leverage
DevOps and Containers help succeed in Public
Cloud
What is DevOps? • “Continuous delivery to enable business agility” – business definition
• “CI + CD + Automated Testing + CM + deployment” – process definition
• “DevOps is a culture” – analyst definition
• Regardless of your definition, DevOps is a must to use public cloud effectively
What are containers?
How do containers help with DevOps in the public cloud?• Containers provide light weight virtualization ➡ 80% utilization
• Avoid de-virtualization and sticker shock!
• Containers provide portability and consistency• Ideal for DevOps, specifically in dynamic public cloud environments
• Containers provide better analytics• Cost, perf, resource usage at a “job” rather than “server” granularity
• Containers allow converting servers to services• Leverage microservices for fast iteration & quick software delivery
Challenges in running containers on AWS at scale• Container orchestration at scale
(scheduling across a cluster)
• Auto-scaling (up and down) cluster
• Public vs. private subnets
• Service discovery and routing to apps
• AWS API call limits
• Persistent storage – stability, efficiency
• Lots of OS/container related bugs
• Networking, load-balancers, and DNS
• Application-level log management
• Application level security & control
What does it all mean?
So, what do you need to execute successful DevOps strategy?• Infrastructure management
• EC2 (47+ types), S3, …
• AWS monitoring/governance• E.g. AWS Cost Explorer, AWS
Cloud Watch, …
• Container orchestration• Kubernetes, Docker Swarm,
Mesos
• Persistent volume management• EBS, EFS, Flocker, …
• Routing and load balancing• ELB, NGINX, VPC peering
• DevOps tools & processes• Jenkins, Chef, Puppet, …
• Artifact management• Nexus, ECR, Artifactory,
…
• Tie everything together• Experimentation• Scripting
Key Takeaways• Public cloud ≠ private cloud
• VM != instance ➡ use containers for virtualization & efficiency
• Switch from resource constrained thinking to time constrained thinking
• A lot of research and experimentation of APIs and tools to put together a solution ➡ resource intensive
Thank you! • For more resources see http://applatix.com/resources
• Feedback? Questions? [email protected] or @applatix
•Our next Webinar: Day 1 with AWS: What practices to put in place NOW?Feb 19th, 10 am PT
Extra slides