SlideShare a Scribd company logo
How we build features at
Serv.sg
in a Pandan Leaf...
January 06th 2016
Nicolas Mas
Nicolas@serv.sg
Nicolas.Mas@gmail.com
https://www.linkedin.com/in/nicolasmas
https://github.com/nicolasmas
Acknowledgment
“Alone we can do so little; together we can
do so much”
Sandeep Isac Marco Yang Alex Hayden
Alexander Bulat Andrei Ping Yang
<ME>
Nicolas Mas
Nicolas@serv.sg
Nicolas.Mas@gmail.com
https://www.linkedin.com/in/nicolasmas
https://github.com/nicolasmas
</ME>
What this talk won’t do
⬗ Entertain you with funny
pictures (sorry). This will be
the only one.
⬗ Describe the tools being
used, unless there is a
specific request (let’s keep
the focus).
⬗ Guarantee that Murphy’s law
won’t impact the demo.
So what is it going to be?
⬗ What do we do at Serv.sg?
⬗ Our (current) technology stack
⬗ Problem we solve
⬗ Feature build (+ DEMO)
⬗ Back to our initial problem...
⬗ Limits
⬗ Enhancements
⬗ B Tracks: if we really have time
Disclaimer: I am a DevOps padawan, what is described tonight is probably
not the best solution ever. Any suggestion is welcome~
What we do at Serv.sg
✓ Real time Mobile workforce location tracking
✓ Automated scheduling of service appointments
✓ Automated email / SMS reminders of upcoming appointments and contracts.
✓ Manage customer data and all history of service appointments
✓ Manage Services offered, including recurring contracts and packages, etc.
✓ Advanced reports on employee utilization as well as business
Technologies (Stack… for now)
Key
backend
technology
Data
storage
Key
frontend
technology
Technologies (DevOps)
For now… (bis)
The Problem We Hope to solve...
Feature A
Feature B
… Feature N
PRODUCT
BACKLOG
QA / UAT /
PRODUCTION
Build - All or Nothing
Feature A
Feature B
Monolithic App Development
Overview
JIRA-456
JIRA-456.serv.sg
JIRA-456.db.serv.sg
/serv-branch-build
Branch JIRA-456
JOB JIRA-456
On “New Branch”
JOB Monitor Branches
Overview
On “Branch Deleted”
JIRA-456
JIRA-456.serv.sg
JIRA-456.db.serv.sg
/serv-branch-build
Branch JIRA-456
JOB JIRA-456
JOB Monitor Branches
It all starts in Jira
⬗ The developer takes ownership of, let’s say the item “JIRA-456” during a
sprint.
⬘ Actually, he does not do it in JIRA, but from github by branching out the
codebase.
⬘ The Branch HAS TO BE named after the jira item, e.g. JIRA-456
It continues on Slack
⬗ The moment the branch is created, we can actually build the
infrastructure:
⬘ In slack: “/serv-branch-build”
⬗ Slack is asking a Jenkins job to monitor the github repository for
new/deleted branches
What happens in the jenkins monitoring job
⬗ The Jenkins job will do a few things:
⬘ 1. It will connect to github and get all the branches
⬘ 2. It will detect our new branch
⬘ 3. A custom jenkins job will be created for that branch
⬘ Terraform will be invocated
⬗ It will also keep you updated of the progress in Slack
The Infra is built...
...But not yet provisioned !!
Note: we use a pre-baked OS image for
the instances
Building the branch
⬗ In Jenkins
Provisioning the branch
⬗ Ansible playbook
⬘ Site.yml dynamically set
⬗ Roles
⬘ Hostname set
⬘ Supervisord
⬘ Yum additional packages
⬘ Web conf
⬘ DB conf
⬘ DB Load
⬘ (...)
End Result
Destroying the build
⬗ The features has been validated or ditched, the branch is either merged
or destroyed on github
Note: If we need a few back and forth between the product and the dev for the
feature, it’s just a matter of running the jenkins branch job to deploy again
Back in Slack
⬗ “/serv-branch-build”
⬗ AWS quick check.. the instances are terminated
Looking back at our initial problem...
⬗ Deploying by feature is not new. Immutable infra seems to be less
common. The two combined? Anyone doing it?
⬗ From a business/product perspective
⬘ More responsive to bug fixing, features deliveries
⬘ No confusion on what has been deployed
⬘ The branch can be hotfixed => one step closer to CD
⬗ From a technical perspective
⬘ Leveraging the cloud infrastructure, programmatically
⬘ No environment recycling or reconfiguring with the related uncertainty
⬘ As close to production as we can
⬘ A good way to craft baked OS with the latest update and test it
Limits/Challenges
⬗ Hard to keep track of the full cycle, from the OS baking to the feature
deployed:
⬘ Packer: need to manually describe the target provisioned OS. Hard to test,
need to manage the produced artifacts
⬘ Ansible: need to manually write the roles, hard to test and a pain to
maintain
⬘ Terraform: need to manually describe the infra, hard to test, painful to
maintain and evolve. Some bugs with route 53
⬘ Dependency on Jenkins
⬘ A fair amount of templating (jinja2 style) with a risk induced by the dynamic
aspect of the build (hostnames, EIP...)
⬗ Many pieces in movement, dependency
⬗ Need to be in sync with the product team to check and act upon the
feature as soon as it is available. We don’t want a stack running for ages..
Enhancement
⬗ Use a tool to orchestrate the branch + infra build aspect (Spinnaker.io?
StackStorm.io?) or build a simple micro service to do it
⬗ Choose the branch to build in slack instead of all the branches with the
pattern “JIRA-XYZ”
⬗ Improve the provisioning and better manage the ansible playbook
(Tower.io?)
⬗ How is this compatible with our next architecture steps? (micro services)
Bonus Track - Did you know ?
“The mother of all demos” http://en.wikipedia.
org/wiki/The_Mother_of_All_Demos
⬗ Douglas Engelbart's December 9, 1968
⬗ 90-minute live public demonstration of the online system, NLS, they had
been working on since 1962
⬗ 1000 attendees and a demo of almost all features we use today
⬘ Mouse
⬘ hypertext, object addressing and dynamic file linking
⬘ shared-screen collaboration involving two persons at different sites
communicating over a network with audio and video interface.
http://web.stanford.
edu/dept/SUL/library/extra4/sloan/mousesite/1968Demo.html
https://www.youtube.com/playlist?list=PL76DBC8D6718B8FD3
Watch it !!
Bye Bye !

More Related Content

What's hot

Best Practice-React
Best Practice-ReactBest Practice-React
Best Practice-ReactYang Yang
 
Intro to Netflix's Chaos Monkey
Intro to Netflix's Chaos MonkeyIntro to Netflix's Chaos Monkey
Intro to Netflix's Chaos Monkey
Michael Whitehead
 
Continuous integration meetup
Continuous integration meetupContinuous integration meetup
Continuous integration meetupDrew Stephens
 
Do things faster and better with WebAssembly - Sendil Kumar Nellaiyapen - Cod...
Do things faster and better with WebAssembly - Sendil Kumar Nellaiyapen - Cod...Do things faster and better with WebAssembly - Sendil Kumar Nellaiyapen - Cod...
Do things faster and better with WebAssembly - Sendil Kumar Nellaiyapen - Cod...
Codemotion
 
improving the performance of Rails web Applications
improving the performance of Rails web Applicationsimproving the performance of Rails web Applications
improving the performance of Rails web Applications
John McCaffrey
 
Speed = $$$
Speed = $$$Speed = $$$
Speed = $$$
Peter Gfader
 
Railsconf 2014 - Deploying Rails is Easier Thank It Looks
Railsconf 2014 - Deploying Rails is Easier Thank It LooksRailsconf 2014 - Deploying Rails is Easier Thank It Looks
Railsconf 2014 - Deploying Rails is Easier Thank It Looks
talkingquickly
 
Development, Deployment & Collaboration at Etsy
Development, Deployment & Collaboration at EtsyDevelopment, Deployment & Collaboration at Etsy
Development, Deployment & Collaboration at EtsyDaniel Schauenberg
 
Enterprise Workflows When You Aren't Enterprise
Enterprise Workflows When You Aren't EnterpriseEnterprise Workflows When You Aren't Enterprise
Enterprise Workflows When You Aren't Enterprise
Chris Tankersley
 
North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...
North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...
North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...
Sébastien Levert
 
Cypress Automation
Cypress  AutomationCypress  Automation
Cypress Automation
Susantha Pathirana
 
Serverless On Stage - Serverless URL Shortener
Serverless On Stage - Serverless URL ShortenerServerless On Stage - Serverless URL Shortener
Serverless On Stage - Serverless URL Shortener
Luca Bianchi
 
React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile Apps
Jimit Shah
 
The JavaScript Delusion
The JavaScript DelusionThe JavaScript Delusion
The JavaScript Delusion
JUGBD
 
Let’s be productive with spring boot
Let’s be productive with spring bootLet’s be productive with spring boot
Let’s be productive with spring boot
JUGBD
 
Cypress testing
Cypress testingCypress testing
Cypress testing
Vladyslav Romanchenko
 
Creating books app with react native
Creating books app with react nativeCreating books app with react native
Creating books app with react native
Ali Sa'o
 
Kanban stand-up meetings
Kanban stand-up meetingsKanban stand-up meetings
Kanban stand-up meetings
Miroslav Bajtoš
 
Engage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesEngage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPages
Jesse Gallagher
 
Get Off My Thread! - keep your UI super-responsive
Get Off My Thread! - keep your UI super-responsiveGet Off My Thread! - keep your UI super-responsive
Get Off My Thread! - keep your UI super-responsive
DroidConTLV
 

What's hot (20)

Best Practice-React
Best Practice-ReactBest Practice-React
Best Practice-React
 
Intro to Netflix's Chaos Monkey
Intro to Netflix's Chaos MonkeyIntro to Netflix's Chaos Monkey
Intro to Netflix's Chaos Monkey
 
Continuous integration meetup
Continuous integration meetupContinuous integration meetup
Continuous integration meetup
 
Do things faster and better with WebAssembly - Sendil Kumar Nellaiyapen - Cod...
Do things faster and better with WebAssembly - Sendil Kumar Nellaiyapen - Cod...Do things faster and better with WebAssembly - Sendil Kumar Nellaiyapen - Cod...
Do things faster and better with WebAssembly - Sendil Kumar Nellaiyapen - Cod...
 
improving the performance of Rails web Applications
improving the performance of Rails web Applicationsimproving the performance of Rails web Applications
improving the performance of Rails web Applications
 
Speed = $$$
Speed = $$$Speed = $$$
Speed = $$$
 
Railsconf 2014 - Deploying Rails is Easier Thank It Looks
Railsconf 2014 - Deploying Rails is Easier Thank It LooksRailsconf 2014 - Deploying Rails is Easier Thank It Looks
Railsconf 2014 - Deploying Rails is Easier Thank It Looks
 
Development, Deployment & Collaboration at Etsy
Development, Deployment & Collaboration at EtsyDevelopment, Deployment & Collaboration at Etsy
Development, Deployment & Collaboration at Etsy
 
Enterprise Workflows When You Aren't Enterprise
Enterprise Workflows When You Aren't EnterpriseEnterprise Workflows When You Aren't Enterprise
Enterprise Workflows When You Aren't Enterprise
 
North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...
North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...
North American Collaboration Summit 2018 - SharePoint Framework, Angular & Az...
 
Cypress Automation
Cypress  AutomationCypress  Automation
Cypress Automation
 
Serverless On Stage - Serverless URL Shortener
Serverless On Stage - Serverless URL ShortenerServerless On Stage - Serverless URL Shortener
Serverless On Stage - Serverless URL Shortener
 
React native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile AppsReact native - React(ive) Way To Build Native Mobile Apps
React native - React(ive) Way To Build Native Mobile Apps
 
The JavaScript Delusion
The JavaScript DelusionThe JavaScript Delusion
The JavaScript Delusion
 
Let’s be productive with spring boot
Let’s be productive with spring bootLet’s be productive with spring boot
Let’s be productive with spring boot
 
Cypress testing
Cypress testingCypress testing
Cypress testing
 
Creating books app with react native
Creating books app with react nativeCreating books app with react native
Creating books app with react native
 
Kanban stand-up meetings
Kanban stand-up meetingsKanban stand-up meetings
Kanban stand-up meetings
 
Engage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPagesEngage 2019 - De04. Java with Domino After XPages
Engage 2019 - De04. Java with Domino After XPages
 
Get Off My Thread! - keep your UI super-responsive
Get Off My Thread! - keep your UI super-responsiveGet Off My Thread! - keep your UI super-responsive
Get Off My Thread! - keep your UI super-responsive
 

Similar to Building software by feature with immutable infrastructures on AWS

Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up Lookout
Lookout
 
SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진
VMware Tanzu Korea
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty Details
Mike Brittain
 
Bulletproof design systems using storybook
Bulletproof design systems using storybookBulletproof design systems using storybook
Bulletproof design systems using storybook
Chen Feldman
 
Infrastructure as Code, Theory Crash Course
Infrastructure as Code, Theory Crash CourseInfrastructure as Code, Theory Crash Course
Infrastructure as Code, Theory Crash Course
Dr. Sven Balnojan
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partner
Bill Scott
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistMark Fayngersh
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Dmitri Shiryaev
 
Release management with NuGet/Chocolatey/JIRA
Release management with NuGet/Chocolatey/JIRARelease management with NuGet/Chocolatey/JIRA
Release management with NuGet/Chocolatey/JIRA
Yaroslav Serhieiev
 
React Conf 17 Recap
React Conf 17 RecapReact Conf 17 Recap
React Conf 17 Recap
Alex Babkov
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
Fab L
 
Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)
Sergio Navarro Pino
 
Javaland 2017: "You´ll do microservices now". Now what?
Javaland 2017: "You´ll do microservices now". Now what?Javaland 2017: "You´ll do microservices now". Now what?
Javaland 2017: "You´ll do microservices now". Now what?
André Goliath
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
cgack
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
devObjective
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
Abhinav Gupta
 
Advanced deployment scenarios
Advanced deployment scenariosAdvanced deployment scenarios
Advanced deployment scenarios
Sergio Navarro Pino
 

Similar to Building software by feature with immutable infrastructures on AWS (20)

Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up Lookout
 
SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진SpringOne Platform recap 정윤진
SpringOne Platform recap 정윤진
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty Details
 
Django Girls Tutorial
Django Girls TutorialDjango Girls Tutorial
Django Girls Tutorial
 
Bulletproof design systems using storybook
Bulletproof design systems using storybookBulletproof design systems using storybook
Bulletproof design systems using storybook
 
Infrastructure as Code, Theory Crash Course
Infrastructure as Code, Theory Crash CourseInfrastructure as Code, Theory Crash Course
Infrastructure as Code, Theory Crash Course
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partner
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
 
Release management with NuGet/Chocolatey/JIRA
Release management with NuGet/Chocolatey/JIRARelease management with NuGet/Chocolatey/JIRA
Release management with NuGet/Chocolatey/JIRA
 
React Conf 17 Recap
React Conf 17 RecapReact Conf 17 Recap
React Conf 17 Recap
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
 
Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)Advanced deployment scenarios (netcoreconf)
Advanced deployment scenarios (netcoreconf)
 
Javaland 2017: "You´ll do microservices now". Now what?
Javaland 2017: "You´ll do microservices now". Now what?Javaland 2017: "You´ll do microservices now". Now what?
Javaland 2017: "You´ll do microservices now". Now what?
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
 
Advanced deployment scenarios
Advanced deployment scenariosAdvanced deployment scenarios
Advanced deployment scenarios
 

More from Nicolas Mas

Investing in a good software factory and automating the build process
Investing in a good software factory and automating the build processInvesting in a good software factory and automating the build process
Investing in a good software factory and automating the build process
Nicolas Mas
 
Mediatar Fr
Mediatar FrMediatar Fr
Mediatar Fr
Nicolas Mas
 
Internet et Mondes Virtuels.Fr
Internet et Mondes Virtuels.FrInternet et Mondes Virtuels.Fr
Internet et Mondes Virtuels.Fr
Nicolas Mas
 
Virtual Worlds : Anew kind of Sociability Fr
Virtual Worlds : Anew kind of Sociability FrVirtual Worlds : Anew kind of Sociability Fr
Virtual Worlds : Anew kind of Sociability Fr
Nicolas Mas
 
Metaverse a new dimension.Fr
Metaverse a new dimension.FrMetaverse a new dimension.Fr
Metaverse a new dimension.Fr
Nicolas Mas
 
Pra Tic Avatars
Pra Tic AvatarsPra Tic Avatars
Pra Tic Avatars
Nicolas Mas
 
PraTic Days Avatars ConceptSL 230309
PraTic Days Avatars ConceptSL 230309PraTic Days Avatars ConceptSL 230309
PraTic Days Avatars ConceptSL 230309
Nicolas Mas
 

More from Nicolas Mas (7)

Investing in a good software factory and automating the build process
Investing in a good software factory and automating the build processInvesting in a good software factory and automating the build process
Investing in a good software factory and automating the build process
 
Mediatar Fr
Mediatar FrMediatar Fr
Mediatar Fr
 
Internet et Mondes Virtuels.Fr
Internet et Mondes Virtuels.FrInternet et Mondes Virtuels.Fr
Internet et Mondes Virtuels.Fr
 
Virtual Worlds : Anew kind of Sociability Fr
Virtual Worlds : Anew kind of Sociability FrVirtual Worlds : Anew kind of Sociability Fr
Virtual Worlds : Anew kind of Sociability Fr
 
Metaverse a new dimension.Fr
Metaverse a new dimension.FrMetaverse a new dimension.Fr
Metaverse a new dimension.Fr
 
Pra Tic Avatars
Pra Tic AvatarsPra Tic Avatars
Pra Tic Avatars
 
PraTic Days Avatars ConceptSL 230309
PraTic Days Avatars ConceptSL 230309PraTic Days Avatars ConceptSL 230309
PraTic Days Avatars ConceptSL 230309
 

Recently uploaded

Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
harveenkaur52
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
nirahealhty
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
CIOWomenMagazine
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
nhiyenphan2005
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
Gal Baras
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
Rogerio Filho
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
JungkooksNonexistent
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
laozhuseo02
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
GTProductions1
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
laozhuseo02
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 

Recently uploaded (20)

Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!This 7-second Brain Wave Ritual Attracts Money To You.!
This 7-second Brain Wave Ritual Attracts Money To You.!
 
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
Internet of Things in Manufacturing: Revolutionizing Efficiency & Quality | C...
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
 
How to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptxHow to Use Contact Form 7 Like a Pro.pptx
How to Use Contact Form 7 Like a Pro.pptx
 
guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...guildmasters guide to ravnica Dungeons & Dragons 5...
guildmasters guide to ravnica Dungeons & Dragons 5...
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
Latest trends in computer networking.pptx
Latest trends in computer networking.pptxLatest trends in computer networking.pptx
Latest trends in computer networking.pptx
 
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shopHistory+of+E-commerce+Development+in+China-www.cfye-commerce.shop
History+of+E-commerce+Development+in+China-www.cfye-commerce.shop
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
Comptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guideComptia N+ Standard Networking lesson guide
Comptia N+ Standard Networking lesson guide
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
The+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptxThe+Prospects+of+E-Commerce+in+China.pptx
The+Prospects+of+E-Commerce+in+China.pptx
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 

Building software by feature with immutable infrastructures on AWS

  • 1. How we build features at Serv.sg in a Pandan Leaf... January 06th 2016 Nicolas Mas Nicolas@serv.sg Nicolas.Mas@gmail.com https://www.linkedin.com/in/nicolasmas https://github.com/nicolasmas
  • 2. Acknowledgment “Alone we can do so little; together we can do so much” Sandeep Isac Marco Yang Alex Hayden Alexander Bulat Andrei Ping Yang
  • 4. What this talk won’t do ⬗ Entertain you with funny pictures (sorry). This will be the only one. ⬗ Describe the tools being used, unless there is a specific request (let’s keep the focus). ⬗ Guarantee that Murphy’s law won’t impact the demo.
  • 5. So what is it going to be? ⬗ What do we do at Serv.sg? ⬗ Our (current) technology stack ⬗ Problem we solve ⬗ Feature build (+ DEMO) ⬗ Back to our initial problem... ⬗ Limits ⬗ Enhancements ⬗ B Tracks: if we really have time Disclaimer: I am a DevOps padawan, what is described tonight is probably not the best solution ever. Any suggestion is welcome~
  • 6. What we do at Serv.sg ✓ Real time Mobile workforce location tracking ✓ Automated scheduling of service appointments ✓ Automated email / SMS reminders of upcoming appointments and contracts. ✓ Manage customer data and all history of service appointments ✓ Manage Services offered, including recurring contracts and packages, etc. ✓ Advanced reports on employee utilization as well as business
  • 7. Technologies (Stack… for now) Key backend technology Data storage Key frontend technology
  • 9. The Problem We Hope to solve... Feature A Feature B … Feature N PRODUCT BACKLOG QA / UAT / PRODUCTION Build - All or Nothing Feature A Feature B Monolithic App Development
  • 12. It all starts in Jira ⬗ The developer takes ownership of, let’s say the item “JIRA-456” during a sprint. ⬘ Actually, he does not do it in JIRA, but from github by branching out the codebase. ⬘ The Branch HAS TO BE named after the jira item, e.g. JIRA-456
  • 13. It continues on Slack ⬗ The moment the branch is created, we can actually build the infrastructure: ⬘ In slack: “/serv-branch-build” ⬗ Slack is asking a Jenkins job to monitor the github repository for new/deleted branches
  • 14. What happens in the jenkins monitoring job ⬗ The Jenkins job will do a few things: ⬘ 1. It will connect to github and get all the branches ⬘ 2. It will detect our new branch ⬘ 3. A custom jenkins job will be created for that branch ⬘ Terraform will be invocated ⬗ It will also keep you updated of the progress in Slack
  • 15. The Infra is built... ...But not yet provisioned !! Note: we use a pre-baked OS image for the instances
  • 17. Provisioning the branch ⬗ Ansible playbook ⬘ Site.yml dynamically set ⬗ Roles ⬘ Hostname set ⬘ Supervisord ⬘ Yum additional packages ⬘ Web conf ⬘ DB conf ⬘ DB Load ⬘ (...)
  • 19. Destroying the build ⬗ The features has been validated or ditched, the branch is either merged or destroyed on github Note: If we need a few back and forth between the product and the dev for the feature, it’s just a matter of running the jenkins branch job to deploy again
  • 20. Back in Slack ⬗ “/serv-branch-build” ⬗ AWS quick check.. the instances are terminated
  • 21. Looking back at our initial problem... ⬗ Deploying by feature is not new. Immutable infra seems to be less common. The two combined? Anyone doing it? ⬗ From a business/product perspective ⬘ More responsive to bug fixing, features deliveries ⬘ No confusion on what has been deployed ⬘ The branch can be hotfixed => one step closer to CD ⬗ From a technical perspective ⬘ Leveraging the cloud infrastructure, programmatically ⬘ No environment recycling or reconfiguring with the related uncertainty ⬘ As close to production as we can ⬘ A good way to craft baked OS with the latest update and test it
  • 22. Limits/Challenges ⬗ Hard to keep track of the full cycle, from the OS baking to the feature deployed: ⬘ Packer: need to manually describe the target provisioned OS. Hard to test, need to manage the produced artifacts ⬘ Ansible: need to manually write the roles, hard to test and a pain to maintain ⬘ Terraform: need to manually describe the infra, hard to test, painful to maintain and evolve. Some bugs with route 53 ⬘ Dependency on Jenkins ⬘ A fair amount of templating (jinja2 style) with a risk induced by the dynamic aspect of the build (hostnames, EIP...) ⬗ Many pieces in movement, dependency ⬗ Need to be in sync with the product team to check and act upon the feature as soon as it is available. We don’t want a stack running for ages..
  • 23. Enhancement ⬗ Use a tool to orchestrate the branch + infra build aspect (Spinnaker.io? StackStorm.io?) or build a simple micro service to do it ⬗ Choose the branch to build in slack instead of all the branches with the pattern “JIRA-XYZ” ⬗ Improve the provisioning and better manage the ansible playbook (Tower.io?) ⬗ How is this compatible with our next architecture steps? (micro services)
  • 24. Bonus Track - Did you know ? “The mother of all demos” http://en.wikipedia. org/wiki/The_Mother_of_All_Demos ⬗ Douglas Engelbart's December 9, 1968 ⬗ 90-minute live public demonstration of the online system, NLS, they had been working on since 1962 ⬗ 1000 attendees and a demo of almost all features we use today ⬘ Mouse ⬘ hypertext, object addressing and dynamic file linking ⬘ shared-screen collaboration involving two persons at different sites communicating over a network with audio and video interface. http://web.stanford. edu/dept/SUL/library/extra4/sloan/mousesite/1968Demo.html