SlideShare a Scribd company logo
berlin aws meetup: here.com on aws
Implementation timeline, pitfalls and lessons learned
Cristian Măgherușan-Stanciu
<cristian.magherusan-stanciu@here.com>
@magheru_san
June 16, 2015
agenda
Introduction
Implementation timeline
Next steps
Conclusions
Pizza :-)
1
introduction
about here
HERE is a leading location company
∙ Over 6000 employees in 55 countries
∙ We own our map data
∙ state-of-the-art offline capabilities
∙ global map coverage
∙ weekly map updates
∙ location-based services around it
∙ Market leader in automotive
∙ in 4 out of 5 cars sold in the Western hemisphere
∙ Powering a myriad of partners, including
∙ Free apps on major mobile platforms
3
here in berlin
About us
∙ 820 internal employees and hiring :-)
∙ 56 countries and 25 languages, 36% germans
∙ 20% female
∙ Average age 36 years
∙ Interesting mix of start-up/enterprise culture
∙ AWS-first policy for all our services
4
about here.com
The main consumer website of HERE
∙ Designed to seamlessly integrate with, and complement the
native mobile apps
∙ Reference implementation for many capabilities
∙ Re-written from scratch since Fall 2013
∙ Modern technology stack
5
about here.com
About the new version of here.com
∙ Re-launched only 6 months ago
∙ Monthly page loads in the tens of millions
∙ Traffic growing fast, already 3x since the re-launch
∙ Hosted on AWS
6
here.com screenshots
7
implementation timeline
oct 2013 - initial architecture
First AWS setup
9
oct 2013 - first commits
Simple way to run the application
∙ Relatively easy to bootstrap
∙ reused as much as we could from our hello_world skeleton service
∙ Application running on EC2 instances
∙ Single AWS region
∙ Users would connect directly to the ELB
∙ All AWS infrastructure defined using CloudFormation
∙ stacks based on a reused hello_world template
∙ Primitive continuous delivery pipeline: Jenkins, Puppet, cron
10
dec 2013 - first internal release
’Backstage’ launch
∙ Shared with all HERE employees
∙ A few hundreds of daily users
∙ Started to get valuable feedback, mostly about the UX
∙ Production configuration snapshot-ed manually before the
launch
∙ No major architecture changes
11
jan 2014 - infrastructure improvements
Deployment orchestration changes
∙ Fully controlled by Jenkins via ec2_collective/SQS
∙ Production deployments triggered automatically after every
commit
∙ no longer relying on cron
∙ we can easily see deployment failures in the Job output
∙ automated configuration snapshot-ing for Production
12
jan 2014 - infrastructure improvements
Relatively large number of Dev environments
∙ Created and maintained manually via CloudFormation
∙ Configurations started drifting
∙ It became tedious to update them in case of a needed mass
change
∙ The clouds tool was written during a ’Research Week’
∙ makes it so much easier to manage diverging stacks
∙ released on Github as GPL2
∙ can be gem install-ed
13
aug 2014 - alpha release
Released to hundreds of selected preview users
∙ Capacity planning&load tests, all looked great
∙ Architecture remained almost the same
∙ added ElastiCache(memcached) as shared temporary storage
∙ worked around SQS limitations: split queues by environment
∙ Slow loading performance reports, triggered some actions
∙ started using NewRelic for Real User Monitoring(RUM)
∙ implemented WebPageTest(WPT) automation in our CI
14
oct 2014 - beta release
Opt-in release from the legacy website
∙ Beta invites implemented using SES
∙ Thousands of users world-wide
∙ More capacity planning
∙ Added CloudFront CDN for static files
15
oct 2014 - beta release
Beta architecture
16
oct 2014 - beta release
CloudFront setup details
∙ S3 bucket as origin
∙ Dev/prod S3 bucket sync, IAM cross-account bucket policy
∙ Noticed worse performance in NewRelic, WTH?
∙ CloudFront limitation: won’t compress content
∙ explicit gzip compression needed, scripted at build time
∙ upload already compressed files to S3
∙ only compress the files when it helps (>1KB size reduction)
∙ Required HTTP headers, set as S3 object metadata
∙ MIME type
∙ gzip encoding
∙ caching duration (we use half a year by default)
17
oct 2014 - beta release
File path conventions
∙ File paths depend on the file content:
/static_content/path/to/file.css_d34db33f
∙ ’d34db33f’ is the result of
sha256(plain_file_content)[0..7]
∙ path translation table
∙ all files under one directory for easy filtering later
∙ intentionally decoupled from what’s deployed on EC2
∙ idempotent content updates
18
oct 2014 - beta release
Still single region
∙ Limitation of our custom continuous deployment automation
was fixed, but it was too late
∙ Initial test results
∙ CloudFront static file caching would hide this well enough
∙ NewRelic and WebPageTest results deemed acceptable
19
dec 2014 - launch
Launch architecture
20
dec 2014 - launch
All traffic from the legacy environment (HTTP redirect)
∙ Millions of users world-wide, more capacity planning needed
∙ Extended CloudFront, now also used for dynamic content
∙ Decided to implement dynamic-CloudFront before multi-region,
more benefits for little extra costs
∙ OCSP Stapling - no more extra blocking call to your CA: 80-400ms
saving
∙ early TCP termination: 50-500ms saving
∙ long-living connections between CloudFront and ELB
∙ HTTP redirects to HTTPS: 50-500ms saving for plain HTTP users
∙ Browsers: one less domain to resolve, less TCP connections to
maintain, less CPU usage
21
jan 2015 - multi-region
Desired setup
22
jan 2015 - multi-region
First expansion attempt
∙ Latency-based routing with Route53, really straightforward
∙ No other architecture changes were needed
∙ Deployed to Singapore and Frankfurt in addition to existing
Virginia
∙ Soon realized that Frankfurt was broken a bit ’special’ :-)
∙ different way to define ElastiCache SGs (VPC-only region)
∙ ElastiCache was not yet supported by CloudFormation there
23
jan 2015 - multi-region
With Singapore added, we noticed almost no performance
improvement - WTH?
∙ Investigation immediately revealed NewRelic setup errors
∙ incorrectly included in HTML
∙ we were missing metrics from the slowest clients! :-(
∙ Fixed the NewRelic configuration
∙ noticed how slow we really were in most geographies
24
jan 2015 multi-region
Investigating the lack of performance improvements
∙ Backend performance issues in Singapore
∙ Only shifting network latency, not overcoming it
∙ Root cause: some APIs we depend on when rendering HTML
were deployed in remote regions
25
jan 2015 - multi-region
Speeding up Singapore
∙ Avoid blocking API calls from the landing page
∙ replaced one with a local GeoIP database, removed another
∙ backend performance improved 50x
26
apr-may 2015 - performance issues
Loading performance was lagging behind our competitors
∙ They improved significantly
∙ We got many new users from emerging markets
∙ Visible in user feedback and bounce rates
∙ Had to take some actions
27
apr-may 2015 - magellan
Our current ways of working, Magellan, set up in Jan 2015
∙ Self-organizing, temporary, cross-functional teams mandated by
management to increase a metric
∙ Bottom-up innovation
∙ everyone chooses their team
∙ design, implementation and release is team’s responsibility
∙ management reviews the progress and provides some advice
∙ First iteration (Jan - Apr): post-launch usability improvements
∙ Second iteration: tech debt and performance fixes
28
apr-may 2015 - magellan
Improving our performance
∙ Goal of one of the teams
∙ bring load performance back on par with the competition
∙ Actions that were taken
∙ finally launched Frankfurt(fixed in the meantime)
∙ also Sydney and California
∙ refactored our CloudFormation stacks (now all identical)
∙ instances were right-sized
∙ devs heavily optimized the application for faster loading
∙ DevOps at its best
29
apr-may 2015 - magellan
Results
∙ Visual progress now comparable to Google maps our
competition :-)
∙ Global loading time average reduced by about a second
∙ Lots of improvement ideas were added to the backlog
∙ More fixes to be implemented soon 30
next steps
next steps
More performance improvements
∙ Fix some remaining bugs
∙ we’d finish loading 2-3 seconds earlier
∙ but minimal visual progress changes
∙ SPDY HTTP2 on CloudFront
∙ AWS has to implement it
∙ eventual application changes
∙ reverse proxy through CloudFront some of our client APIs
32
conclusions
conclusions
In no particular order
∙ Start small
∙ Iterate continuously
∙ Be data-driven in decision making (A/B, user feedback, RUM,
WPT)
∙ Not all AWS regions are (born) equal
∙ Expect and embrace AWS limitations
∙ Workarounds sometimes lead to bigger improvements (cache
busting, clouds)
∙ CloudFront is excellent at HTTPS website acceleration, use it!
∙ Automate anything that bothers you
∙ DevOps FTW!
34
Questions
35
references and credits
Resources
∙ Clouds on GitHub https://github.com/cristim/clouds
∙ Any used logos and images are © of their respective authors
36
Thank You!
37
pizza :-)
pizza!
39

More Related Content

What's hot

MuleSoft Meetup Roma - CloudHub Networking Stategies
MuleSoft Meetup Roma -  CloudHub Networking StategiesMuleSoft Meetup Roma -  CloudHub Networking Stategies
MuleSoft Meetup Roma - CloudHub Networking Stategies
Alfonso Martino
 
Flux is incubating + the road ahead
Flux is incubating + the road aheadFlux is incubating + the road ahead
Flux is incubating + the road ahead
LibbySchulze
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Sonja Schweigert
 
Dockerize it all
Dockerize it allDockerize it all
Dockerize it all
Puneet Behl
 
12 Factor App Methodology
12 Factor App Methodology12 Factor App Methodology
12 Factor App Methodology
laeshin park
 
Accelerate Your Development: CI/CD using AWS and Serverless
Accelerate Your Development: CI/CD using AWS and ServerlessAccelerate Your Development: CI/CD using AWS and Serverless
Accelerate Your Development: CI/CD using AWS and Serverless
AaronLieberman5
 
12 factor apps
12 factor apps12 factor apps
12 factor apps
Alican Akkuş
 
MuleSoft meetup__houston #13
MuleSoft meetup__houston #13MuleSoft meetup__houston #13
MuleSoft meetup__houston #13
Jim Andrews
 
Power shell for newbies getting started powershell 4
Power shell for newbies getting started powershell 4Power shell for newbies getting started powershell 4
Power shell for newbies getting started powershell 4
Zafar Ali Khan
 
DevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipelineDevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipeline
Aarno Aukia
 
9th Manila MuleSoft Meetup July 2021
9th Manila MuleSoft Meetup July 20219th Manila MuleSoft Meetup July 2021
9th Manila MuleSoft Meetup July 2021
Ryan Anthony Andal
 
Sprint 59
Sprint 59Sprint 59
Sprint 59
ManageIQ
 
Kubecon 2019 Recap
Kubecon 2019 RecapKubecon 2019 Recap
Kubecon 2019 Recap
Aarno Aukia
 
Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague
Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in PragueContinuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague
Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague
Roman Pickl
 
Scaling Monitoring At Databricks From Prometheus to M3
Scaling Monitoring At Databricks From Prometheus to M3Scaling Monitoring At Databricks From Prometheus to M3
Scaling Monitoring At Databricks From Prometheus to M3
LibbySchulze
 
The 12 Factor App
The 12 Factor AppThe 12 Factor App
The 12 Factor App
rudiyardley
 
Multiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for PublishersMultiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for Publishers
Jon Peck
 
[DevConf.US 2019]Quarkus Brings Serverless to Java Developers
[DevConf.US 2019]Quarkus Brings Serverless to Java Developers[DevConf.US 2019]Quarkus Brings Serverless to Java Developers
[DevConf.US 2019]Quarkus Brings Serverless to Java Developers
Daniel Oh
 
OpenShift meetup Bangalore
OpenShift meetup BangaloreOpenShift meetup Bangalore
OpenShift meetup Bangalore
Suraj Deshmukh
 
Porting Projects to .NET 5
Porting Projects to .NET 5Porting Projects to .NET 5
Porting Projects to .NET 5
Immo Landwerth
 

What's hot (20)

MuleSoft Meetup Roma - CloudHub Networking Stategies
MuleSoft Meetup Roma -  CloudHub Networking StategiesMuleSoft Meetup Roma -  CloudHub Networking Stategies
MuleSoft Meetup Roma - CloudHub Networking Stategies
 
Flux is incubating + the road ahead
Flux is incubating + the road aheadFlux is incubating + the road ahead
Flux is incubating + the road ahead
 
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOpsHybrid and Multi-Cloud Strategies for Kubernetes with GitOps
Hybrid and Multi-Cloud Strategies for Kubernetes with GitOps
 
Dockerize it all
Dockerize it allDockerize it all
Dockerize it all
 
12 Factor App Methodology
12 Factor App Methodology12 Factor App Methodology
12 Factor App Methodology
 
Accelerate Your Development: CI/CD using AWS and Serverless
Accelerate Your Development: CI/CD using AWS and ServerlessAccelerate Your Development: CI/CD using AWS and Serverless
Accelerate Your Development: CI/CD using AWS and Serverless
 
12 factor apps
12 factor apps12 factor apps
12 factor apps
 
MuleSoft meetup__houston #13
MuleSoft meetup__houston #13MuleSoft meetup__houston #13
MuleSoft meetup__houston #13
 
Power shell for newbies getting started powershell 4
Power shell for newbies getting started powershell 4Power shell for newbies getting started powershell 4
Power shell for newbies getting started powershell 4
 
DevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipelineDevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipeline
 
9th Manila MuleSoft Meetup July 2021
9th Manila MuleSoft Meetup July 20219th Manila MuleSoft Meetup July 2021
9th Manila MuleSoft Meetup July 2021
 
Sprint 59
Sprint 59Sprint 59
Sprint 59
 
Kubecon 2019 Recap
Kubecon 2019 RecapKubecon 2019 Recap
Kubecon 2019 Recap
 
Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague
Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in PragueContinuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague
Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague
 
Scaling Monitoring At Databricks From Prometheus to M3
Scaling Monitoring At Databricks From Prometheus to M3Scaling Monitoring At Databricks From Prometheus to M3
Scaling Monitoring At Databricks From Prometheus to M3
 
The 12 Factor App
The 12 Factor AppThe 12 Factor App
The 12 Factor App
 
Multiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for PublishersMultiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for Publishers
 
[DevConf.US 2019]Quarkus Brings Serverless to Java Developers
[DevConf.US 2019]Quarkus Brings Serverless to Java Developers[DevConf.US 2019]Quarkus Brings Serverless to Java Developers
[DevConf.US 2019]Quarkus Brings Serverless to Java Developers
 
OpenShift meetup Bangalore
OpenShift meetup BangaloreOpenShift meetup Bangalore
OpenShift meetup Bangalore
 
Porting Projects to .NET 5
Porting Projects to .NET 5Porting Projects to .NET 5
Porting Projects to .NET 5
 

Similar to Berlin AWS meetup: here.com on AWS

DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
Haggai Philip Zagury
 
Mulesoft Meetup Milano #9 - Batch Processing and CI/CD
Mulesoft Meetup Milano #9 - Batch Processing and CI/CDMulesoft Meetup Milano #9 - Batch Processing and CI/CD
Mulesoft Meetup Milano #9 - Batch Processing and CI/CD
Gonzalo Marcos Ansoain
 
Introduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKIntroduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OK
Kriangkrai Chaonithi
 
Hot deploy
Hot deployHot deploy
Hot deploy
Arief Warazuhudien
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
Lars Rosenquist
 
Serverless - DevOps Lessons Learned From Production
Serverless - DevOps Lessons Learned From ProductionServerless - DevOps Lessons Learned From Production
Serverless - DevOps Lessons Learned From Production
Steve Hogg
 
Seminar Modernizing Your Development Using Microservices, Container & Kubernetes
Seminar Modernizing Your Development Using Microservices, Container & KubernetesSeminar Modernizing Your Development Using Microservices, Container & Kubernetes
Seminar Modernizing Your Development Using Microservices, Container & Kubernetes
PT Datacomm Diangraha
 
Next gen software operations models in the cloud
Next gen software operations models in the cloudNext gen software operations models in the cloud
Next gen software operations models in the cloud
Aarno Aukia
 
Figaf pi auto migration 20191024 webinar
Figaf pi auto migration 20191024 webinarFigaf pi auto migration 20191024 webinar
Figaf pi auto migration 20191024 webinar
Daniel Graversen
 
Adopting PCF At An Automobile Manufacturer
Adopting PCF At An Automobile ManufacturerAdopting PCF At An Automobile Manufacturer
Adopting PCF At An Automobile Manufacturer
Gregor Zurowski
 
Adopting PCF At An Automobile Manufacturer
Adopting PCF At An Automobile ManufacturerAdopting PCF At An Automobile Manufacturer
Adopting PCF At An Automobile Manufacturer
VMware Tanzu
 
DevOps for SAP CPI presentation
DevOps for SAP CPI presentationDevOps for SAP CPI presentation
DevOps for SAP CPI presentation
Daniel Graversen
 
MuleSoft_Noida_Meetup_CICD_Azure_07_May_2022.pptx
MuleSoft_Noida_Meetup_CICD_Azure_07_May_2022.pptxMuleSoft_Noida_Meetup_CICD_Azure_07_May_2022.pptx
MuleSoft_Noida_Meetup_CICD_Azure_07_May_2022.pptx
Shiva Sahu
 
Successful DevOps implementation for small teams a true story
Successful DevOps implementation for small teams  a true storySuccessful DevOps implementation for small teams  a true story
Successful DevOps implementation for small teams a true story
Jakub Paweł Głazik
 
How automate your SAP PI/PO/CPI and API management processes
How automate your SAP PI/PO/CPI and API management processesHow automate your SAP PI/PO/CPI and API management processes
How automate your SAP PI/PO/CPI and API management processes
Daniel Graversen
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
MulesoftMunichMeetup
 
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weaveworks
 
Twelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring FrameworkTwelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring Framework
dinkar thakur
 
Pivotal Cloud Foundry 2.6: A First Look
Pivotal Cloud Foundry 2.6: A First LookPivotal Cloud Foundry 2.6: A First Look
Pivotal Cloud Foundry 2.6: A First Look
VMware Tanzu
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro services
Spyros Lambrinidis
 

Similar to Berlin AWS meetup: here.com on AWS (20)

DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
DevOpsDays Tel Aviv DEC 2022 | Building A Cloud-Native Platform Brick by Bric...
 
Mulesoft Meetup Milano #9 - Batch Processing and CI/CD
Mulesoft Meetup Milano #9 - Batch Processing and CI/CDMulesoft Meetup Milano #9 - Batch Processing and CI/CD
Mulesoft Meetup Milano #9 - Batch Processing and CI/CD
 
Introduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKIntroduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OK
 
Hot deploy
Hot deployHot deploy
Hot deploy
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
 
Serverless - DevOps Lessons Learned From Production
Serverless - DevOps Lessons Learned From ProductionServerless - DevOps Lessons Learned From Production
Serverless - DevOps Lessons Learned From Production
 
Seminar Modernizing Your Development Using Microservices, Container & Kubernetes
Seminar Modernizing Your Development Using Microservices, Container & KubernetesSeminar Modernizing Your Development Using Microservices, Container & Kubernetes
Seminar Modernizing Your Development Using Microservices, Container & Kubernetes
 
Next gen software operations models in the cloud
Next gen software operations models in the cloudNext gen software operations models in the cloud
Next gen software operations models in the cloud
 
Figaf pi auto migration 20191024 webinar
Figaf pi auto migration 20191024 webinarFigaf pi auto migration 20191024 webinar
Figaf pi auto migration 20191024 webinar
 
Adopting PCF At An Automobile Manufacturer
Adopting PCF At An Automobile ManufacturerAdopting PCF At An Automobile Manufacturer
Adopting PCF At An Automobile Manufacturer
 
Adopting PCF At An Automobile Manufacturer
Adopting PCF At An Automobile ManufacturerAdopting PCF At An Automobile Manufacturer
Adopting PCF At An Automobile Manufacturer
 
DevOps for SAP CPI presentation
DevOps for SAP CPI presentationDevOps for SAP CPI presentation
DevOps for SAP CPI presentation
 
MuleSoft_Noida_Meetup_CICD_Azure_07_May_2022.pptx
MuleSoft_Noida_Meetup_CICD_Azure_07_May_2022.pptxMuleSoft_Noida_Meetup_CICD_Azure_07_May_2022.pptx
MuleSoft_Noida_Meetup_CICD_Azure_07_May_2022.pptx
 
Successful DevOps implementation for small teams a true story
Successful DevOps implementation for small teams  a true storySuccessful DevOps implementation for small teams  a true story
Successful DevOps implementation for small teams a true story
 
How automate your SAP PI/PO/CPI and API management processes
How automate your SAP PI/PO/CPI and API management processesHow automate your SAP PI/PO/CPI and API management processes
How automate your SAP PI/PO/CPI and API management processes
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
 
Twelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring FrameworkTwelve-Factor application pattern with Spring Framework
Twelve-Factor application pattern with Spring Framework
 
Pivotal Cloud Foundry 2.6: A First Look
Pivotal Cloud Foundry 2.6: A First LookPivotal Cloud Foundry 2.6: A First Look
Pivotal Cloud Foundry 2.6: A First Look
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro services
 

Recently uploaded

Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
Tarandeep Singh
 
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
APNIC
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
3a0sd7z3
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
davidjhones387
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
Paul Walk
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
3a0sd7z3
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
Donato Onofri
 
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
thezot
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
rtunex8r
 
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
APNIC
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
xjq03c34
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
k4ncd0z
 

Recently uploaded (12)

Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
 
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
 
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
一比一原版新西兰林肯大学毕业证(Lincoln毕业证书)学历如何办理
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
 
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...Securing BGP: Operational Strategies and Best Practices for Network Defenders...
Securing BGP: Operational Strategies and Best Practices for Network Defenders...
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
 

Berlin AWS meetup: here.com on AWS

  • 1. berlin aws meetup: here.com on aws Implementation timeline, pitfalls and lessons learned Cristian Măgherușan-Stanciu <cristian.magherusan-stanciu@here.com> @magheru_san June 16, 2015
  • 4. about here HERE is a leading location company ∙ Over 6000 employees in 55 countries ∙ We own our map data ∙ state-of-the-art offline capabilities ∙ global map coverage ∙ weekly map updates ∙ location-based services around it ∙ Market leader in automotive ∙ in 4 out of 5 cars sold in the Western hemisphere ∙ Powering a myriad of partners, including ∙ Free apps on major mobile platforms 3
  • 5. here in berlin About us ∙ 820 internal employees and hiring :-) ∙ 56 countries and 25 languages, 36% germans ∙ 20% female ∙ Average age 36 years ∙ Interesting mix of start-up/enterprise culture ∙ AWS-first policy for all our services 4
  • 6. about here.com The main consumer website of HERE ∙ Designed to seamlessly integrate with, and complement the native mobile apps ∙ Reference implementation for many capabilities ∙ Re-written from scratch since Fall 2013 ∙ Modern technology stack 5
  • 7. about here.com About the new version of here.com ∙ Re-launched only 6 months ago ∙ Monthly page loads in the tens of millions ∙ Traffic growing fast, already 3x since the re-launch ∙ Hosted on AWS 6
  • 10. oct 2013 - initial architecture First AWS setup 9
  • 11. oct 2013 - first commits Simple way to run the application ∙ Relatively easy to bootstrap ∙ reused as much as we could from our hello_world skeleton service ∙ Application running on EC2 instances ∙ Single AWS region ∙ Users would connect directly to the ELB ∙ All AWS infrastructure defined using CloudFormation ∙ stacks based on a reused hello_world template ∙ Primitive continuous delivery pipeline: Jenkins, Puppet, cron 10
  • 12. dec 2013 - first internal release ’Backstage’ launch ∙ Shared with all HERE employees ∙ A few hundreds of daily users ∙ Started to get valuable feedback, mostly about the UX ∙ Production configuration snapshot-ed manually before the launch ∙ No major architecture changes 11
  • 13. jan 2014 - infrastructure improvements Deployment orchestration changes ∙ Fully controlled by Jenkins via ec2_collective/SQS ∙ Production deployments triggered automatically after every commit ∙ no longer relying on cron ∙ we can easily see deployment failures in the Job output ∙ automated configuration snapshot-ing for Production 12
  • 14. jan 2014 - infrastructure improvements Relatively large number of Dev environments ∙ Created and maintained manually via CloudFormation ∙ Configurations started drifting ∙ It became tedious to update them in case of a needed mass change ∙ The clouds tool was written during a ’Research Week’ ∙ makes it so much easier to manage diverging stacks ∙ released on Github as GPL2 ∙ can be gem install-ed 13
  • 15. aug 2014 - alpha release Released to hundreds of selected preview users ∙ Capacity planning&load tests, all looked great ∙ Architecture remained almost the same ∙ added ElastiCache(memcached) as shared temporary storage ∙ worked around SQS limitations: split queues by environment ∙ Slow loading performance reports, triggered some actions ∙ started using NewRelic for Real User Monitoring(RUM) ∙ implemented WebPageTest(WPT) automation in our CI 14
  • 16. oct 2014 - beta release Opt-in release from the legacy website ∙ Beta invites implemented using SES ∙ Thousands of users world-wide ∙ More capacity planning ∙ Added CloudFront CDN for static files 15
  • 17. oct 2014 - beta release Beta architecture 16
  • 18. oct 2014 - beta release CloudFront setup details ∙ S3 bucket as origin ∙ Dev/prod S3 bucket sync, IAM cross-account bucket policy ∙ Noticed worse performance in NewRelic, WTH? ∙ CloudFront limitation: won’t compress content ∙ explicit gzip compression needed, scripted at build time ∙ upload already compressed files to S3 ∙ only compress the files when it helps (>1KB size reduction) ∙ Required HTTP headers, set as S3 object metadata ∙ MIME type ∙ gzip encoding ∙ caching duration (we use half a year by default) 17
  • 19. oct 2014 - beta release File path conventions ∙ File paths depend on the file content: /static_content/path/to/file.css_d34db33f ∙ ’d34db33f’ is the result of sha256(plain_file_content)[0..7] ∙ path translation table ∙ all files under one directory for easy filtering later ∙ intentionally decoupled from what’s deployed on EC2 ∙ idempotent content updates 18
  • 20. oct 2014 - beta release Still single region ∙ Limitation of our custom continuous deployment automation was fixed, but it was too late ∙ Initial test results ∙ CloudFront static file caching would hide this well enough ∙ NewRelic and WebPageTest results deemed acceptable 19
  • 21. dec 2014 - launch Launch architecture 20
  • 22. dec 2014 - launch All traffic from the legacy environment (HTTP redirect) ∙ Millions of users world-wide, more capacity planning needed ∙ Extended CloudFront, now also used for dynamic content ∙ Decided to implement dynamic-CloudFront before multi-region, more benefits for little extra costs ∙ OCSP Stapling - no more extra blocking call to your CA: 80-400ms saving ∙ early TCP termination: 50-500ms saving ∙ long-living connections between CloudFront and ELB ∙ HTTP redirects to HTTPS: 50-500ms saving for plain HTTP users ∙ Browsers: one less domain to resolve, less TCP connections to maintain, less CPU usage 21
  • 23. jan 2015 - multi-region Desired setup 22
  • 24. jan 2015 - multi-region First expansion attempt ∙ Latency-based routing with Route53, really straightforward ∙ No other architecture changes were needed ∙ Deployed to Singapore and Frankfurt in addition to existing Virginia ∙ Soon realized that Frankfurt was broken a bit ’special’ :-) ∙ different way to define ElastiCache SGs (VPC-only region) ∙ ElastiCache was not yet supported by CloudFormation there 23
  • 25. jan 2015 - multi-region With Singapore added, we noticed almost no performance improvement - WTH? ∙ Investigation immediately revealed NewRelic setup errors ∙ incorrectly included in HTML ∙ we were missing metrics from the slowest clients! :-( ∙ Fixed the NewRelic configuration ∙ noticed how slow we really were in most geographies 24
  • 26. jan 2015 multi-region Investigating the lack of performance improvements ∙ Backend performance issues in Singapore ∙ Only shifting network latency, not overcoming it ∙ Root cause: some APIs we depend on when rendering HTML were deployed in remote regions 25
  • 27. jan 2015 - multi-region Speeding up Singapore ∙ Avoid blocking API calls from the landing page ∙ replaced one with a local GeoIP database, removed another ∙ backend performance improved 50x 26
  • 28. apr-may 2015 - performance issues Loading performance was lagging behind our competitors ∙ They improved significantly ∙ We got many new users from emerging markets ∙ Visible in user feedback and bounce rates ∙ Had to take some actions 27
  • 29. apr-may 2015 - magellan Our current ways of working, Magellan, set up in Jan 2015 ∙ Self-organizing, temporary, cross-functional teams mandated by management to increase a metric ∙ Bottom-up innovation ∙ everyone chooses their team ∙ design, implementation and release is team’s responsibility ∙ management reviews the progress and provides some advice ∙ First iteration (Jan - Apr): post-launch usability improvements ∙ Second iteration: tech debt and performance fixes 28
  • 30. apr-may 2015 - magellan Improving our performance ∙ Goal of one of the teams ∙ bring load performance back on par with the competition ∙ Actions that were taken ∙ finally launched Frankfurt(fixed in the meantime) ∙ also Sydney and California ∙ refactored our CloudFormation stacks (now all identical) ∙ instances were right-sized ∙ devs heavily optimized the application for faster loading ∙ DevOps at its best 29
  • 31. apr-may 2015 - magellan Results ∙ Visual progress now comparable to Google maps our competition :-) ∙ Global loading time average reduced by about a second ∙ Lots of improvement ideas were added to the backlog ∙ More fixes to be implemented soon 30
  • 33. next steps More performance improvements ∙ Fix some remaining bugs ∙ we’d finish loading 2-3 seconds earlier ∙ but minimal visual progress changes ∙ SPDY HTTP2 on CloudFront ∙ AWS has to implement it ∙ eventual application changes ∙ reverse proxy through CloudFront some of our client APIs 32
  • 35. conclusions In no particular order ∙ Start small ∙ Iterate continuously ∙ Be data-driven in decision making (A/B, user feedback, RUM, WPT) ∙ Not all AWS regions are (born) equal ∙ Expect and embrace AWS limitations ∙ Workarounds sometimes lead to bigger improvements (cache busting, clouds) ∙ CloudFront is excellent at HTTPS website acceleration, use it! ∙ Automate anything that bothers you ∙ DevOps FTW! 34
  • 37. references and credits Resources ∙ Clouds on GitHub https://github.com/cristim/clouds ∙ Any used logos and images are © of their respective authors 36