DevOps by examples
Giulio Vian
http://blog.casavian.eu/
giulio.dev@casavian.eu
@giulio_vian
http://www.getlatestversion.it/
This Session
100/200-level
Grasp the essentials of the DevOps approach.
(well …, some essentials)
Leave open questions to the end
2
What we will talk about?
DevOps intro
Demos
Environment hosting the app
The Application itself
Deployment
Dynamic configuration
Wrap-up
3
OpsDev
About me
4
Most recent
project
2M users
40,000 RPS
2Gbps
5
© 2016 IMG Universe, LLC.
All Rights Reserved
Your turn
Azure
Visual Studio Team
Services (VSTS)
ASP.NET
Linux (Ubuntu)
Developers
Infra Engineers
Architects
Managers
6
«Appetizer»
7
DevOps is a product?
8
DevOps is a job?
9
DevOps is a culture, movement or practice
DevOps is a term used to refer to a set of practices that
emphasizes the collaboration and communication of
both software developers and other information-
technology (IT) professionals while automating the
process of software delivery and infrastructure changes.
DevOps represents a change in IT culture, focusing on rapid IT service delivery through the
adoption of agile, lean practices in the context of a system-oriented approach. DevOps
emphasizes people (and culture), and seeks to improve collaboration between operations and
development teams. DevOps implementations utilize technology — especially automation tools
that can leverage an increasingly programmable and dynamic infrastructure from a life cycle
perspective.
DevOps is the union of people, process, and products to
enable continuous delivery of value to our end users.
Wikipedia (2017)
Gartner
Microsoft (Donovan Brown)
10
Continuous Delivery evolution…
Source: Jez Humble © 2010
11
…rooted in Agile Principles…
Individuals and interactions
over processes and tools
Working software
over comprehensive documentation
Customer collaboration
over contract negotiation
Responding to change
over following a plan
http://agilemanifesto.org/
…giving back
13
Source: Felice Pescatore
Value
Collaboration
Agile Development
Continous Integration
Continous Delivery
DevOps
«Main course»
Where? Infrastructure-as-Code
What? Build & Package
How? Deploy
14
Execution environment
Operating System
O.S. Modules
Local Services, Libraries
Application
Network & External Services
Data
15
Execution environment (alt)
Base container
Custom Container
Application
(in container)
Network & External Services
(e.g. Kubernetes)
Data
16
Execution environment – Comments
Setup times vs. launch times
Capacity planning
Running costs (Buy vs. Make)
17
Infrastructure-as-
Code
Azure Resource Manager
• Code
• Automation
18
Infrastructure-as-Code – Comments
Declarative vs. Imperative
Version Control
Continuous Integration
Dynamic vs. Static
Azure Resource Manager
Declarative Json-based
Extensible (script, DSC)
Entire infrastructure
AWS CloudFormation
Declarative Json-based
Terraform
Docker
Not much declarative
Single container
Swarm, Kubernetes, Mesos, …
Ansible, Puppet, Chef, CFEngine, …
19
Application
Web page showing DB data
• Environment
• Configuration
20
Build & Packaging
Collect everything
21
Build & Packaging – Comments
Version Control
Continuous Integration
Artifacts
Semantic Versioning
Images (Docker, AMI, Azure VM images)
22
Deploy
VSTS Release Management
• Controlled Automation
23
Secrets
Build time
Signing
Deploy time
Credentials
Run time
Tokens
Avoid exposures
git push hook
Static analysis
.gitignore
Centralized Version Control
Distinct repositories
Azure Key Vault,
AWS Key Management Service,
etc.
24
Deploy – Comments
Category
Dev / QA / Prod
Target-bound
Release cadence
Feature toggles
25
Source: Pete Hodgson
Database
Invest early
Improve
26
(Photo: Coonan, Inc.)
Dynamic
Configuration
Feature Toggle
27
So far
28
OpsDev
Application Monitoring
Errors
Performance
Availability
Scalability
Analytics
App Insight
HockeyApp
ELK
ElasticSearch+LogStash+Kibana
Splunk
BugSense
Fabric
Firebase
New Relic
…
29
Troubleshooting & Feedback loop
Access to production
Read-only
Debug
Sensitive production data
Design/architecture
Quality of data
Those Precious PDBs
30
More VSTS – Azure Links
DevTest labs
Deployment
Load testing
31
«Dessert»
32
People
(Photo: DoD)
33
Automation
(Photo: Alexander Dummer)
34
Resources
35
(Photo: Elya)
Call to action
36
(Photo: Francesco Canu)
Partial checklist
Where is configuration stored?
How is configuration updated?
Is production configuration isolated and secured?
Where are the secrets and who can access them?
How versions are tracked?
Who authorizes changes and how?
How data is preserved on updates?
How data schema and module interfaces updates?
Using environment images or scripts?
How big is the deploy window?
How are the tracked activities and errors?
How are operational data is collected from production?
37
Bibliografy & References
https://github.com/giuliov/DevOps-by-examples
http://www.slideshare.net/giuliov/presentations
http://martinfowler.com/articles/feature-toggles.html
https://leanpub.com/build
https://launchdarkly.com/
http://agilemanifesto.org/
https://azure.microsoft.com/en-us/services/application-insights/
https://github.com/tfsaggregator/tfsaggregator
https://github.com/aspnet
https://azure.microsoft.com/en-us/services/key-vault/
https://aws.amazon.com/kms/
https://blogs.msdn.microsoft.com/buckh/2016/09/30/controlling-exposure-through-feature-flags-in-vs-
team-services/
38
To know more
Continuous Delivery: Reliable Software
Releases through Build, Test, and
Deployment Automation — J.Humble,
D.Farley (Addison-Wesley)
https://www.amazon.com/Continuous-
Delivery/dp/0321601912/
The Phoenix Project — G.Kim, K.Behr,
G.Spafford (IT Revolution Press)
https://www.amazon.com/Phoenix-Project-
DevOps-Helping-Business/dp/0988262509/
39
To know more (cont’d)
The DevOps Handbook — G.Kim,
P.Debois, J.Willis, J.Humble (IT
Revolution Press)
https://www.amazon.com/DevOps-
Handbook-World-Class-Reliability-
Organizations/dp/1942788002/
Continuous Delivery with Visual Studio
ALM 2015 — M.Olausson, J.Ehn (Apress)
http://www.amazon.com/Continuous-
Delivery-Visual-Studio-2015/dp/1484212738/
40
End of transmission
41

DWX 2017 - DevOps by examples

Editor's Notes

  • #11 http://www.gartner.com/it-glossary/devops/ DevOps is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment, where building, testing, and releasing software can happen rapidly, frequently, and more reliably. Wikipedia (2017)
  • #26 http://martinfowler.com/articles/feature-toggles.html