3. Legacy code
● C++ monolithic legacy code.
● Not fast enough response time.
● Maintenance was hard and expensive.
● Development of new features was hard.
● Wasn’t Multi region.
● Not so exciting stack.
4. New stack
● Faster delivery of features using CD.
● Improve performance.
● Make it exciting stack to work with.
● Scalable for higher load.
6. Micro services
● Scalable
● Micro services in front of the current stack.
● Caching.
● Adding new features.
● Shape teams based on the MicroServices.
7. Cloud
● AWS
○ Phoenix Pattern (immutable servers)
○ DNS for semantic versioning
○ VPC networking ( public and private )
○ ELB
○ Autoscaling
11. Deployment Iteration 2
● Automatic Trigger
● RPM pull with user-data
● New ASG with ELB
AMI
user-data
executable script
12. Deployment Iteration 3
● Automatic Trigger
● RPM pull with user-data
● reuse of the ELBs
AMI
user-data
executable script
13. Continuous Delivery
● Jenkins to GoCD.
● Pipelines instead of Tasks.
● Concept of Environments.
● Environment Specific Agents.
● Resource Specific Agents.
17. Service Discovery
● We are not currently using service discovery tools.
● Predictable DNS endpoints.
● Amazon Route53 Aliases instead of CNAMEs.
● Looking at other solutions like Consul, etcd, Mesos DNS
19. CDN Routing
● Routing based on files on a network file system.
(Slow)
● Slow on making configuration changes to CDN.
20. Deployment Time
● Bake AMI (15-25 mins)
● Deploy (1-2 mins)
● Smoke Test (2-4 mins for DNS)
● Service Test (1 min)
● Switch (1 min)
● Get rid of old instances. (1 min)
(repeat [“Dev” “QA” “Perf” “Stage” “Prod”])
21. Ansible
● Started with ansible 1.7
● pulled some changes from 1.8
● Patched some modules
● Ansible splitted Modules to a separate repo.
● Our pull requests have not got accepted.