SlideShare una empresa de Scribd logo
1 de 37
How do we drive tech changes?
Jaewoo Ahn (https://www.linkedin.com/in/lancersahn)
Platform Architecture Team
SK Planet
Disclaimers for Non-Koreans 
• This slide is translated version. Originally it was written in Korean.
(http://www.slideshare.net/saltynut/how-do-we-drive-tech-changes )
• Development environments and cultures in Korea might be quite different
from yours. In Korea,
– Almost projects(I bet over 80%) still use Java as backend and most popular combination is Java
1.6/Tomcat 6/Spring 3.x/MyBatis/SVN. It’s hard to find(I bet under 20%) somewhere use Java
1.7+, Spring 4.x, Any ORM(JPA, Hibernate, …), and other languages.
– There are many projects developed by SI companies (outsourcing), not their own developers.
– Scrum/Agile is generally NOT welcomed, due to Korean culture. People is familiar to just
follow directions from their boss and (almost) nobody want to pay more money on their
request changes.
– Well, feel comfortable? Then you might enjoy this. 
– p.s. Somebody can blame me these are not TRUE. Believe or not, it’s up to you.
• I’m not English-native person, and therefore you can find many poor writings
even I did my best. You are welcome to suggest/correct it.
• Got it? Keep go ahead!
Changes?
‘People hate change…
and that’s because people hate change…
I want to be sure that you get my point.
People really hate change.
They really, really do.’
- Tom DeMarco/Timothy Lister, Peopleware
- (Orginally) Steve McMenamin, The Atlantic
Systems Guild, 1996
Nothing different on Software
• Should we use it? I’m tired to learn new one.
• Why can’t we do it with current technologies?
• Did it proved? Is anybody use it in our
company?
• If we got some troubles, will you be liable for
that?
Belling the cat
And it should be considered that nothing is more
difficult to handle, more doubtful of success, nor
more dangerous to manage, than to put oneself at
the head of introducing new orders. For the
introducer has all those who benefit from the old
orders as enemies, and he has lukewarm defenders
in all those who might benefit from the new orders.
- Niccolo Machiavelli, Il Principe, 1513
Still we need changes
• New technology draws “fun”.
• Technical changes might change your
viewpoint and scopes what you can.
• Old developers become outdated with old-
fashioned technologies, but young developers
excited with new technologies.
• You can easily find early-adopters in OSS
communities trying to prove it instead of you.
(forget your company & country, be global!)
Agony when you develop new one
• Just use same/safe technology/methodology
before
• Try for new/challenging ones
• Which one is more “funny” for you project
members?
• Yes, I know some people doesn’t have any
time to consider “fun”. Sorry. 
So our team decided
• We think ‘change’ cause more ‘fun’, so we are
going to change something.
• If we say it seems to be ‘correct’/‘good’ way
‘in principle’/’ideally’, just do it.
Phase 1
Firstly, let’s create
a ‘New’ Service
with ‘New’ technologies
using ‘New’ methodologies
Phase 1
Firstly, let’s create
a ‘New’ Service
with ‘New’ technologies
using ‘New’ methodologies
Don’t need to consider existing/legacy ones
free to use any ones what devs want
Make people working better
Backend
FrontendWeb Application
Web Application
Phase 1 : Architecture
Presentation
Controller
Business
Data Access
Database
Existing systems’ Architecture
Frontend
Backend
Database
UI
REST API Service
New system’s Architecture
Phase 1 : Architecture
• Explicitly divide frontend and backend,
enabling separated development and
deployment
• REST API should be used between Frontend
and Backend, and should be stateless
architecture.
Phase 1 : Frontend
Web Application
Presentation
Controller
Business
Data Access
JSP
Sitemesh
JQuery
Existing systems’ Frontend
Frontend
HTML
CSS
Angular.js
Bootstrap
Less
Grunt
Bower
Karma
New system’s Frontend
Phase 1 : Frontend
Web Application
Presentation
Controller
Business
Data Access
JSP
Sitemesh
JQuery
Existing systems’ Frontend
Frontend
HTML
CSS
Angular.js
Bootstrap
Less
Grunt
Bower
Karma
New system’s Frontend
Frontend
MVC Framework
Frontend
Task Runner
(Build, Test, Run)
Frontend
Package Manager
Frontend
Test Runner
CSS
Framework
CSS
Helper
Phase 1 : Backend
Java 1.6
Tomcat 6
Spring 3.x + XML Conf.
Spring MVC
MyBatis
Maven
Existing systems’ Backend
a.k.a. De Facto Standard(?)
Java set in Korea
New system’s Backend
Java 1.7
Tomcat 7
Spring 4.x + Java Conf.
Spring MVC
Spring Data JPA +
Hibernate
Maven
Phase 1 : Backend
• Goodbye MyBatis & Hello ORM
– Model-Driven Design
– DDL is auto-generated (not for Production)
– Stop wasting time to draw ERD
– MySQL is for running, H2 is for Unit Test
• ORM performance concerns?
– If we need, use Second-Level Cache
– If not enough, use Native Query
– If not enough, tune DB
Phase 1 : Methodology/Process
• Project Charter
– Overview, Scope, Milestones
– Communication Points(Wiki, JIRA, Agile Board, Git)
– Principles, FAQ
• Begin to use Scrum
– Empowered with JIRA Agile
– Sprint Planning/Execution/Review
• Git
– At the beginning, we didn’t force any branch policy
– Let people feel friendly with Git
Phase 1 : Methodology/Process
• Project Principles
– During a sprint period, all members should concentrate on sprint backlog.
– All sprint backlog should be done during a sprint, and demonstrated + ready to deploy.
– Dog-fooding
– Please suggests voluntarily something needed, something missed, problems, and better
ideas. Help each others even it’s not assigned to you.
– Don’t hide your development process and results. Be open-minded for other’s comment.
– Be proud of yourself – we are creating best practice on our team and company.
Backend DeveloperFrontend Developer
Phase 1 – Methodology/Process
Analyze User Story
Design Contract/APIs
Implement Frontend Implement Backend
Mock/Unit Test Unit Test
Consume Actual APIs Load Test
User Story is done
Phase 1 Results
• Released beta version of “New” Service
successfully
• Learned and proved “New” technologies
• Adopted new methodology/process
• Positive Feedbacks from stakeholders
• Most of all, project members feel
‘fulfilling’ and ‘fun’
All right, go for next!
Phase 2
Let’s refactor & build
‘Existing’ services + @
with ‘Newer’ technologies
using ‘Newer’ methodologies
by ‘More’ People.
Phase 2
Let’s refactor & build
‘Existing’ services + @
with ‘Newer’ technologies
using ‘Newer’ methodologies
by ‘More’ People.
How do we migrate & transit?
There’s a lot of new things!
Experiments for better
improvements
What about more than 2 pizzas team?
Phase 2 : Architecture
• As Is : Monolithic Architecture
Web Application for “User”
Web Application for “Admin”
API Service for “App”
“Central” Database
A.UI A.Biz
B.UI B.Biz
A.UI A.Biz
C.UI C.Biz
D.UI D.Biz
D.Biz
A.Biz
A B
C D
Phase 2 : Architecture
• To Be : Micro-Service Architecture(MSA)
A
UI
A
Service
B
UI
B
Service
C
UI
C
Service
D
UI
D
Service
A
DB
B
DB
C
DB
D
DB
Content
Router
API
Gateway
Content
Router
Service
Registry
Event
Broker
Config
Service
Deploy
Service
User Endpoint
Admin Endpoint
Phase 2 : Architecture
• Why we choose MSA
– Divide not only Frontend and Backend but also feature boundaries
– Force to maintain contract based on API
– Easy to build/deploy, Easy to scale, Isolate fail-effects
– Micro-Service is easier to understand and develop
– We can apply polyglot programming and multi-framework on each
Micro-services
Phase 2 : Architecture
• Why we choose MSA
– Divide not only Frontend and Backend but also feature boundaries
Synchronize with company’s engineer career paths (Frontend/Backend)
– Force to maintain contract based on API
Nothing can be done without APIs
– Easy to build/deploy, Easy to scale, Isolate fail-effects
Yes, it’s isolated by each Micro-Services
– Micro-Service is easier to understand and develop
Reduced code size make it easier to understand by anyone
– We can apply polyglot programming and multi-framework on each
Micro-services
Experiment them as you want(If fails, do it another way)
Maybe it makes easy to hire your developers 
Phase 2 : Architecture
• Of course, there are many drawbacks
– How do we fine-grain into Micro-Services?
– How do we manage contract (API)?
– A feature could be done by only one developers, but now
we need to co-work with Frontend developer and other
micro-service developers
– How do we manage session states?
– How do we handle dependencies and transaction among
services?
– Code efforts might be duplicated
– Headaches for deploy/operations
Phase 2 : Architecture
• Of course, there are many drawbacks
– How do we fine-grain into Micro-Services?
– How do we manage contract (API)?
– A feature could be done by only one developers, but now
we need to co-work with Frontend developer and other
micro-service developers
– How do we manage session states?
– How do we handle dependencies and transaction among
services?
– Code efforts might be duplicated
– Headaches for deploy/operations
How do we solve these?
Phase 2 : Architecture
• Of course, there are many drawbacks
– How do we fine-grain into Micro-Services?
– How do we manage contract (API)?
– A feature could be done by only one developers, but now
we need to co-work with Frontend developer and other
micro-service developers
– How do we manage session states?
– How do we handle dependencies and transaction among
services?
– Code efforts might be duplicated
– Headaches for deploy/operations
How do we solve these?
Ready for pay?
Sorry, I’ll discuss at next time
(In fact, we’re still doing)
and you can google for answers 
Phase 2 : Architecture
• Of course, there are many drawbacks
– How do we fine-grain into Micro-Services?
– How do we manage contract (API)?
– A feature could be done by only one developers, but now
we need to co-work with Frontend developer and other
micro-service developers
– How do we manage session states?
– How do we handle dependencies and transaction among
services?
– Code efforts might be duplicated
– Headaches for deploy/operations ?
Most of all,
We enjoy our efforts to overcome these drawbacks,
and we believe that is worth to pay for MSA’s benefit.
Remind:
If we say it seems to be ‘correct’/‘good’ way ‘in
principle’/’ideally’, just do it.
Phase 2 : Frontend
A
UI
B
UI
C
UI
D
UI
Content
Router
Content
Router
사용자용 Endpoint
관리자용 Endpoint
Single Origin/Endpoint
for Browsers
Basis for enabling UI
Versioning and A/B
Testing
Log/Analytics Develop independently,
paired with Micro-
Service Backend
In production service,
it’s composited into
main pages with other
UI
E2E(End-to-End) Test
Using Selenium for E2E
test on user’s viewpoint
Phase 2 : Backend
Java 1.7
Tomcat 7
Spring 4.x + Java Conf.
Java 1.8
Embedded Tomcat
Spring Boot
Node.js
Express
MySQL
Redis
Others…
Groovy
Go
ASP.NET 5
Vert.x
Others…
Polyglot,
Multi-
Framework
Next
Candidates
Polyglot,
NoSql
Another
NoSql
or Cloud
PlanetSpace
Our
File Storage
Cloud
Phase 2 : Methodology/Process
• Enhance Scrum
– Apply estimation for planning
– Manage Release note with JIRA Versions
– Synchronize with JIRA Issue Status
Open -> Progress -> Resolve(Code Commit/Link) -> Close(master
merge & deployed)
• Git Branch Policy
– Master Branch : deploy for Production/Stage
– Dev Branch : shared one for sprint development
– Feature Branch : Created by JIRA Issue Id
– Code Reviews and Test when merge Feature to Dev, and Dev to
Master
Phase 2 : Methodology/Process
• Pair Programming
– Pair by Frontend, Backend, Test
• 2 Scrums
– To maintain 2-pizzas
• Rules & Conventions
– Make implicit knowledge among team members into explicit
documentation
– Shared among Scrums
• Code Workshop during Sprint Review
– Share each other’s know-how
Phase 2 is still progressing
We cannot make it
We’re sure we can do it,
since we enjoy the changes
Let’s change.
End of Slides

Más contenido relacionado

La actualidad más candente

Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShiftReal-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShiftChristian Posta
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Christian Posta
 
Writing Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly SwarmWriting Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly SwarmComsysto Reply GmbH
 
Microservices Architecture for Content Management Systems using AWS Lambda an...
Microservices Architecture for Content Management Systems using AWS Lambda an...Microservices Architecture for Content Management Systems using AWS Lambda an...
Microservices Architecture for Content Management Systems using AWS Lambda an...Mitoc Group
 
WSO2Con USA 2017: Scalable Real-time Complex Event Processing at Uber
WSO2Con USA 2017: Scalable Real-time Complex Event Processing at UberWSO2Con USA 2017: Scalable Real-time Complex Event Processing at Uber
WSO2Con USA 2017: Scalable Real-time Complex Event Processing at UberWSO2
 
Building .NET Microservices
Building .NET MicroservicesBuilding .NET Microservices
Building .NET MicroservicesVMware Tanzu
 
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Red Hat Developers
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithMarkus Eisele
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesRobin Howlett
 
Adobe AEM for Business Heads
Adobe AEM for Business HeadsAdobe AEM for Business Heads
Adobe AEM for Business HeadsYash Mody
 
JavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJoe Kutner
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-finalChristian Posta
 
성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택uEngine Solutions
 
JavaEE Microservices platforms
JavaEE Microservices platformsJavaEE Microservices platforms
JavaEE Microservices platformsPayara
 
How would ESBs look like, if they were done today.
How would ESBs look like, if they were done today.How would ESBs look like, if they were done today.
How would ESBs look like, if they were done today.Markus Eisele
 
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance TuningChristian Posta
 

La actualidad más candente (20)

Micro service architecture
Micro service architectureMicro service architecture
Micro service architecture
 
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShiftReal-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2
 
Writing Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly SwarmWriting Java EE microservices using WildFly Swarm
Writing Java EE microservices using WildFly Swarm
 
Microservices Architecture for Content Management Systems using AWS Lambda an...
Microservices Architecture for Content Management Systems using AWS Lambda an...Microservices Architecture for Content Management Systems using AWS Lambda an...
Microservices Architecture for Content Management Systems using AWS Lambda an...
 
WSO2Con USA 2017: Scalable Real-time Complex Event Processing at Uber
WSO2Con USA 2017: Scalable Real-time Complex Event Processing at UberWSO2Con USA 2017: Scalable Real-time Complex Event Processing at Uber
WSO2Con USA 2017: Scalable Real-time Complex Event Processing at Uber
 
Building .NET Microservices
Building .NET MicroservicesBuilding .NET Microservices
Building .NET Microservices
 
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolith
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web Services
 
DevNexus 2015
DevNexus 2015DevNexus 2015
DevNexus 2015
 
Adobe AEM for Business Heads
Adobe AEM for Business HeadsAdobe AEM for Business Heads
Adobe AEM for Business Heads
 
JavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor App
 
Microservices and APIs
Microservices and APIsMicroservices and APIs
Microservices and APIs
 
Javantura Zagreb 2014 - Vaadin - Peter Lehto
Javantura Zagreb 2014 - Vaadin - Peter LehtoJavantura Zagreb 2014 - Vaadin - Peter Lehto
Javantura Zagreb 2014 - Vaadin - Peter Lehto
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-final
 
성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택성공적인 서비스로의 플랫폼 선택
성공적인 서비스로의 플랫폼 선택
 
JavaEE Microservices platforms
JavaEE Microservices platformsJavaEE Microservices platforms
JavaEE Microservices platforms
 
How would ESBs look like, if they were done today.
How would ESBs look like, if they were done today.How would ESBs look like, if they were done today.
How would ESBs look like, if they were done today.
 
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning
 

Destacado

Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해Terry Cho
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice ArchitectureYoonsung Jung
 
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기기술적 변화를 이끌어가기
기술적 변화를 이끌어가기Jaewoo Ahn
 
MSA를 이용해 구현하는 고가용/고확장성 서비스
MSA를 이용해 구현하는 고가용/고확장성 서비스MSA를 이용해 구현하는 고가용/고확장성 서비스
MSA를 이용해 구현하는 고가용/고확장성 서비스DoHyun Jung
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
Api gateway : To be or not to be
Api gateway : To be or not to beApi gateway : To be or not to be
Api gateway : To be or not to beJaewoo Ahn
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기Jaewoo Ahn
 
SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSADaekwon Kang
 

Destacado (9)

Asset Management on AWS
Asset Management on AWSAsset Management on AWS
Asset Management on AWS
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기기술적 변화를 이끌어가기
기술적 변화를 이끌어가기
 
MSA를 이용해 구현하는 고가용/고확장성 서비스
MSA를 이용해 구현하는 고가용/고확장성 서비스MSA를 이용해 구현하는 고가용/고확장성 서비스
MSA를 이용해 구현하는 고가용/고확장성 서비스
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
Api gateway : To be or not to be
Api gateway : To be or not to beApi gateway : To be or not to be
Api gateway : To be or not to be
 
마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기마이크로서비스 아키텍처로 개발하기
마이크로서비스 아키텍처로 개발하기
 
SLiPP 스터디 - MSA
SLiPP 스터디 - MSASLiPP 스터디 - MSA
SLiPP 스터디 - MSA
 

Similar a How do we drive tech changes

2016 Mastering SAP Tech - 2 Speed IT and lessons from an Agile Waterfall eCom...
2016 Mastering SAP Tech - 2 Speed IT and lessons from an Agile Waterfall eCom...2016 Mastering SAP Tech - 2 Speed IT and lessons from an Agile Waterfall eCom...
2016 Mastering SAP Tech - 2 Speed IT and lessons from an Agile Waterfall eCom...Eneko Jon Bilbao
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Mirco Hering
 
Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessChristian Posta
 
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...Radovan Semancik
 
Enhancing Software Engineering Practices at Our Startup.pptx
Enhancing Software Engineering Practices at Our Startup.pptxEnhancing Software Engineering Practices at Our Startup.pptx
Enhancing Software Engineering Practices at Our Startup.pptxmuktar42
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation ProjectsAmazon Web Services
 
Microservices, Microfrontends and Feature Teams
Microservices, Microfrontends and Feature TeamsMicroservices, Microfrontends and Feature Teams
Microservices, Microfrontends and Feature TeamsGiulio Roggero
 
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?Phuong Mai Nguyen
 
Serverless Toronto helps Startups
Serverless Toronto helps StartupsServerless Toronto helps Startups
Serverless Toronto helps StartupsDaniel Zivkovic
 
DevOps The Cultural revolution
DevOps The Cultural revolutionDevOps The Cultural revolution
DevOps The Cultural revolutionSomenath Ghosh
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
The Architect's Two Hats
The Architect's Two HatsThe Architect's Two Hats
The Architect's Two HatsBen Stopford
 
From Monolith to Microservices - What Could Go Wrong?
From Monolith to Microservices - What Could Go Wrong?From Monolith to Microservices - What Could Go Wrong?
From Monolith to Microservices - What Could Go Wrong?Phuong Mai Nguyen
 
SRE Topics with Charity Majors and Liz Fong-Jones of Honeycomb
SRE Topics with Charity Majors and Liz Fong-Jones of HoneycombSRE Topics with Charity Majors and Liz Fong-Jones of Honeycomb
SRE Topics with Charity Majors and Liz Fong-Jones of HoneycombDaniel Zivkovic
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to MicroservicesAd van der Veer
 
DOES16 London - Jonathan Fletcher - Re-imagining Hiscox IT: A DevOps Story
DOES16 London - Jonathan Fletcher - Re-imagining Hiscox IT: A DevOps StoryDOES16 London - Jonathan Fletcher - Re-imagining Hiscox IT: A DevOps Story
DOES16 London - Jonathan Fletcher - Re-imagining Hiscox IT: A DevOps StoryGene Kim
 
DevOpsDays Jakarta Igites
DevOpsDays Jakarta IgitesDevOpsDays Jakarta Igites
DevOpsDays Jakarta IgitesDevOpsDaysJKT
 

Similar a How do we drive tech changes (20)

2016 Mastering SAP Tech - 2 Speed IT and lessons from an Agile Waterfall eCom...
2016 Mastering SAP Tech - 2 Speed IT and lessons from an Agile Waterfall eCom...2016 Mastering SAP Tech - 2 Speed IT and lessons from an Agile Waterfall eCom...
2016 Mastering SAP Tech - 2 Speed IT and lessons from an Agile Waterfall eCom...
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015
 
Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverless
 
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
How To Maintain Million Lines Of Open Source Code And Remain Sane or The Stor...
 
Enhancing Software Engineering Practices at Our Startup.pptx
Enhancing Software Engineering Practices at Our Startup.pptxEnhancing Software Engineering Practices at Our Startup.pptx
Enhancing Software Engineering Practices at Our Startup.pptx
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Microservices, Microfrontends and Feature Teams
Microservices, Microfrontends and Feature TeamsMicroservices, Microfrontends and Feature Teams
Microservices, Microfrontends and Feature Teams
 
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
 
Serverless Toronto helps Startups
Serverless Toronto helps StartupsServerless Toronto helps Startups
Serverless Toronto helps Startups
 
DevOps The Cultural revolution
DevOps The Cultural revolutionDevOps The Cultural revolution
DevOps The Cultural revolution
 
306 belmont ssp08agileit
306 belmont ssp08agileit306 belmont ssp08agileit
306 belmont ssp08agileit
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
The Architect's Two Hats
The Architect's Two HatsThe Architect's Two Hats
The Architect's Two Hats
 
From Monolith to Microservices - What Could Go Wrong?
From Monolith to Microservices - What Could Go Wrong?From Monolith to Microservices - What Could Go Wrong?
From Monolith to Microservices - What Could Go Wrong?
 
SRE Topics with Charity Majors and Liz Fong-Jones of Honeycomb
SRE Topics with Charity Majors and Liz Fong-Jones of HoneycombSRE Topics with Charity Majors and Liz Fong-Jones of Honeycomb
SRE Topics with Charity Majors and Liz Fong-Jones of Honeycomb
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
 
DOES16 London - Jonathan Fletcher - Re-imagining Hiscox IT: A DevOps Story
DOES16 London - Jonathan Fletcher - Re-imagining Hiscox IT: A DevOps StoryDOES16 London - Jonathan Fletcher - Re-imagining Hiscox IT: A DevOps Story
DOES16 London - Jonathan Fletcher - Re-imagining Hiscox IT: A DevOps Story
 
Ice dec05-04-wan leung
Ice dec05-04-wan leungIce dec05-04-wan leung
Ice dec05-04-wan leung
 
Micro services
Micro servicesMicro services
Micro services
 
DevOpsDays Jakarta Igites
DevOpsDays Jakarta IgitesDevOpsDays Jakarta Igites
DevOpsDays Jakarta Igites
 

Último

Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 

Último (20)

Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 

How do we drive tech changes

  • 1. How do we drive tech changes? Jaewoo Ahn (https://www.linkedin.com/in/lancersahn) Platform Architecture Team SK Planet
  • 2. Disclaimers for Non-Koreans  • This slide is translated version. Originally it was written in Korean. (http://www.slideshare.net/saltynut/how-do-we-drive-tech-changes ) • Development environments and cultures in Korea might be quite different from yours. In Korea, – Almost projects(I bet over 80%) still use Java as backend and most popular combination is Java 1.6/Tomcat 6/Spring 3.x/MyBatis/SVN. It’s hard to find(I bet under 20%) somewhere use Java 1.7+, Spring 4.x, Any ORM(JPA, Hibernate, …), and other languages. – There are many projects developed by SI companies (outsourcing), not their own developers. – Scrum/Agile is generally NOT welcomed, due to Korean culture. People is familiar to just follow directions from their boss and (almost) nobody want to pay more money on their request changes. – Well, feel comfortable? Then you might enjoy this.  – p.s. Somebody can blame me these are not TRUE. Believe or not, it’s up to you. • I’m not English-native person, and therefore you can find many poor writings even I did my best. You are welcome to suggest/correct it. • Got it? Keep go ahead!
  • 3. Changes? ‘People hate change… and that’s because people hate change… I want to be sure that you get my point. People really hate change. They really, really do.’ - Tom DeMarco/Timothy Lister, Peopleware - (Orginally) Steve McMenamin, The Atlantic Systems Guild, 1996
  • 4. Nothing different on Software • Should we use it? I’m tired to learn new one. • Why can’t we do it with current technologies? • Did it proved? Is anybody use it in our company? • If we got some troubles, will you be liable for that?
  • 5. Belling the cat And it should be considered that nothing is more difficult to handle, more doubtful of success, nor more dangerous to manage, than to put oneself at the head of introducing new orders. For the introducer has all those who benefit from the old orders as enemies, and he has lukewarm defenders in all those who might benefit from the new orders. - Niccolo Machiavelli, Il Principe, 1513
  • 6. Still we need changes • New technology draws “fun”. • Technical changes might change your viewpoint and scopes what you can. • Old developers become outdated with old- fashioned technologies, but young developers excited with new technologies. • You can easily find early-adopters in OSS communities trying to prove it instead of you. (forget your company & country, be global!)
  • 7. Agony when you develop new one • Just use same/safe technology/methodology before • Try for new/challenging ones • Which one is more “funny” for you project members? • Yes, I know some people doesn’t have any time to consider “fun”. Sorry. 
  • 8. So our team decided • We think ‘change’ cause more ‘fun’, so we are going to change something. • If we say it seems to be ‘correct’/‘good’ way ‘in principle’/’ideally’, just do it.
  • 9. Phase 1 Firstly, let’s create a ‘New’ Service with ‘New’ technologies using ‘New’ methodologies
  • 10. Phase 1 Firstly, let’s create a ‘New’ Service with ‘New’ technologies using ‘New’ methodologies Don’t need to consider existing/legacy ones free to use any ones what devs want Make people working better
  • 11. Backend FrontendWeb Application Web Application Phase 1 : Architecture Presentation Controller Business Data Access Database Existing systems’ Architecture Frontend Backend Database UI REST API Service New system’s Architecture
  • 12. Phase 1 : Architecture • Explicitly divide frontend and backend, enabling separated development and deployment • REST API should be used between Frontend and Backend, and should be stateless architecture.
  • 13. Phase 1 : Frontend Web Application Presentation Controller Business Data Access JSP Sitemesh JQuery Existing systems’ Frontend Frontend HTML CSS Angular.js Bootstrap Less Grunt Bower Karma New system’s Frontend
  • 14. Phase 1 : Frontend Web Application Presentation Controller Business Data Access JSP Sitemesh JQuery Existing systems’ Frontend Frontend HTML CSS Angular.js Bootstrap Less Grunt Bower Karma New system’s Frontend Frontend MVC Framework Frontend Task Runner (Build, Test, Run) Frontend Package Manager Frontend Test Runner CSS Framework CSS Helper
  • 15. Phase 1 : Backend Java 1.6 Tomcat 6 Spring 3.x + XML Conf. Spring MVC MyBatis Maven Existing systems’ Backend a.k.a. De Facto Standard(?) Java set in Korea New system’s Backend Java 1.7 Tomcat 7 Spring 4.x + Java Conf. Spring MVC Spring Data JPA + Hibernate Maven
  • 16. Phase 1 : Backend • Goodbye MyBatis & Hello ORM – Model-Driven Design – DDL is auto-generated (not for Production) – Stop wasting time to draw ERD – MySQL is for running, H2 is for Unit Test • ORM performance concerns? – If we need, use Second-Level Cache – If not enough, use Native Query – If not enough, tune DB
  • 17. Phase 1 : Methodology/Process • Project Charter – Overview, Scope, Milestones – Communication Points(Wiki, JIRA, Agile Board, Git) – Principles, FAQ • Begin to use Scrum – Empowered with JIRA Agile – Sprint Planning/Execution/Review • Git – At the beginning, we didn’t force any branch policy – Let people feel friendly with Git
  • 18. Phase 1 : Methodology/Process • Project Principles – During a sprint period, all members should concentrate on sprint backlog. – All sprint backlog should be done during a sprint, and demonstrated + ready to deploy. – Dog-fooding – Please suggests voluntarily something needed, something missed, problems, and better ideas. Help each others even it’s not assigned to you. – Don’t hide your development process and results. Be open-minded for other’s comment. – Be proud of yourself – we are creating best practice on our team and company.
  • 19. Backend DeveloperFrontend Developer Phase 1 – Methodology/Process Analyze User Story Design Contract/APIs Implement Frontend Implement Backend Mock/Unit Test Unit Test Consume Actual APIs Load Test User Story is done
  • 20. Phase 1 Results • Released beta version of “New” Service successfully • Learned and proved “New” technologies • Adopted new methodology/process • Positive Feedbacks from stakeholders • Most of all, project members feel ‘fulfilling’ and ‘fun’
  • 21. All right, go for next!
  • 22. Phase 2 Let’s refactor & build ‘Existing’ services + @ with ‘Newer’ technologies using ‘Newer’ methodologies by ‘More’ People.
  • 23. Phase 2 Let’s refactor & build ‘Existing’ services + @ with ‘Newer’ technologies using ‘Newer’ methodologies by ‘More’ People. How do we migrate & transit? There’s a lot of new things! Experiments for better improvements What about more than 2 pizzas team?
  • 24. Phase 2 : Architecture • As Is : Monolithic Architecture Web Application for “User” Web Application for “Admin” API Service for “App” “Central” Database A.UI A.Biz B.UI B.Biz A.UI A.Biz C.UI C.Biz D.UI D.Biz D.Biz A.Biz A B C D
  • 25. Phase 2 : Architecture • To Be : Micro-Service Architecture(MSA) A UI A Service B UI B Service C UI C Service D UI D Service A DB B DB C DB D DB Content Router API Gateway Content Router Service Registry Event Broker Config Service Deploy Service User Endpoint Admin Endpoint
  • 26. Phase 2 : Architecture • Why we choose MSA – Divide not only Frontend and Backend but also feature boundaries – Force to maintain contract based on API – Easy to build/deploy, Easy to scale, Isolate fail-effects – Micro-Service is easier to understand and develop – We can apply polyglot programming and multi-framework on each Micro-services
  • 27. Phase 2 : Architecture • Why we choose MSA – Divide not only Frontend and Backend but also feature boundaries Synchronize with company’s engineer career paths (Frontend/Backend) – Force to maintain contract based on API Nothing can be done without APIs – Easy to build/deploy, Easy to scale, Isolate fail-effects Yes, it’s isolated by each Micro-Services – Micro-Service is easier to understand and develop Reduced code size make it easier to understand by anyone – We can apply polyglot programming and multi-framework on each Micro-services Experiment them as you want(If fails, do it another way) Maybe it makes easy to hire your developers 
  • 28. Phase 2 : Architecture • Of course, there are many drawbacks – How do we fine-grain into Micro-Services? – How do we manage contract (API)? – A feature could be done by only one developers, but now we need to co-work with Frontend developer and other micro-service developers – How do we manage session states? – How do we handle dependencies and transaction among services? – Code efforts might be duplicated – Headaches for deploy/operations
  • 29. Phase 2 : Architecture • Of course, there are many drawbacks – How do we fine-grain into Micro-Services? – How do we manage contract (API)? – A feature could be done by only one developers, but now we need to co-work with Frontend developer and other micro-service developers – How do we manage session states? – How do we handle dependencies and transaction among services? – Code efforts might be duplicated – Headaches for deploy/operations How do we solve these?
  • 30. Phase 2 : Architecture • Of course, there are many drawbacks – How do we fine-grain into Micro-Services? – How do we manage contract (API)? – A feature could be done by only one developers, but now we need to co-work with Frontend developer and other micro-service developers – How do we manage session states? – How do we handle dependencies and transaction among services? – Code efforts might be duplicated – Headaches for deploy/operations How do we solve these? Ready for pay? Sorry, I’ll discuss at next time (In fact, we’re still doing) and you can google for answers 
  • 31. Phase 2 : Architecture • Of course, there are many drawbacks – How do we fine-grain into Micro-Services? – How do we manage contract (API)? – A feature could be done by only one developers, but now we need to co-work with Frontend developer and other micro-service developers – How do we manage session states? – How do we handle dependencies and transaction among services? – Code efforts might be duplicated – Headaches for deploy/operations ? Most of all, We enjoy our efforts to overcome these drawbacks, and we believe that is worth to pay for MSA’s benefit. Remind: If we say it seems to be ‘correct’/‘good’ way ‘in principle’/’ideally’, just do it.
  • 32. Phase 2 : Frontend A UI B UI C UI D UI Content Router Content Router 사용자용 Endpoint 관리자용 Endpoint Single Origin/Endpoint for Browsers Basis for enabling UI Versioning and A/B Testing Log/Analytics Develop independently, paired with Micro- Service Backend In production service, it’s composited into main pages with other UI E2E(End-to-End) Test Using Selenium for E2E test on user’s viewpoint
  • 33. Phase 2 : Backend Java 1.7 Tomcat 7 Spring 4.x + Java Conf. Java 1.8 Embedded Tomcat Spring Boot Node.js Express MySQL Redis Others… Groovy Go ASP.NET 5 Vert.x Others… Polyglot, Multi- Framework Next Candidates Polyglot, NoSql Another NoSql or Cloud PlanetSpace Our File Storage Cloud
  • 34. Phase 2 : Methodology/Process • Enhance Scrum – Apply estimation for planning – Manage Release note with JIRA Versions – Synchronize with JIRA Issue Status Open -> Progress -> Resolve(Code Commit/Link) -> Close(master merge & deployed) • Git Branch Policy – Master Branch : deploy for Production/Stage – Dev Branch : shared one for sprint development – Feature Branch : Created by JIRA Issue Id – Code Reviews and Test when merge Feature to Dev, and Dev to Master
  • 35. Phase 2 : Methodology/Process • Pair Programming – Pair by Frontend, Backend, Test • 2 Scrums – To maintain 2-pizzas • Rules & Conventions – Make implicit knowledge among team members into explicit documentation – Shared among Scrums • Code Workshop during Sprint Review – Share each other’s know-how
  • 36. Phase 2 is still progressing We cannot make it We’re sure we can do it, since we enjoy the changes