SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Architecting for Hyper Growth and Great
Engineering Culture
Software Architect Indonesia Community #2 Meetup
Ifnu, 26 November 2016
Who am I?
• Ifnu Bima
• Ilmu Komputer IPB
• Join blibli in 2012
• Was working for Deustche Bank Singapore
• Employee no 69
• Engineers no ~13
• Development Manager
– blibli.com Web UI
– Mobile Apps : Android, iOS, Windows Phone
– Content Management System
– Search
– Product Discovery : Wishlist, Product Review
Architecture Goals
• Hyper Growth
– X times every year: traffic, transaction, feature,
codebase and head count
• Great Engineering Culture
– Foster innovation
– Iteration speed
Software Architecture
Software architecture refers to the fundamental
structures of a software system, the discipline of
creating such structures, and the documentation
of these structures
Software architecture is about making
fundamental structural choices which are costly
to change once implemented
Source : https://en.wikipedia.org/wiki/Software_architecture
Software Architect / Principal
• Design architecture
– Monolithycs vs Microservices
– SQL vs NoSQL
– Datacenter vs Cloud
• Pick Platform, library and provide template
– Java vs PHP vs Ruby vs Scala vs Go Lang
• Hiring standard
– Technical interview
– Hiring decision
– Training and Certification
Functional vs Non Functional Requirement
• Functional requirement in Bussiness
Requirement Documentation (BRD)
• Non Functional Requirement
– External Quality
• Speed, Performance
• Scalability, Elasticity, Reliability
• Security
– Internal Quality
• Unit testing coverage
• Code readability, design pattern
• Learning curve for new hire
Speed – Performance : Server Side
• HardDrive & Database is the slowest link
• Lots lots lots of caching :
– Redis : small but lots of item
– Guava : big and slow item, refresh cache with
background process
• SSD for IO intensive operation : Database,
static & image server
• Non blocking IO using reactive system
• Slow Query monitoring and indexing
Speed – Performance : Client Side
• Bandwith is the slowest link
• Small bandwith : gzip, image compression,
minimize css & js, image & html lazy load
• Render first, script later: defer 3rd party script
• Layout first, content later: layout only using
CSS, inline CSS for viewport
• Reduce page load & render from 12s to 4s
Scalability, Elasticity, Reliability
• Stateless application
• Externalize session to repository. Currently we use Redis
• Externalize scheduler
• Microservices
– http://martinfowler.com/articles/microservices.html
• Reactive System
– Non blocking IO
– Parallel execution
– Future / callback
• NoSQL
– Solr, elasticsearch
– Redis
– MongoDB
• Go lang ?
Performance Monitoring
• Newrelic.com
• AppDynamic
• Realtime and Archived performance monitoring
• Performance metrics
– Response time, both server and client side
– Drill down of time spent in application
– Slow query monitoring
– Cache monitoring. Cache hit ratio.
– Server monitoring : CPU, Memory, I/O and Network
Performance Testing and Profiling
• JMeter and WAPT, other alternative is Gatling
• Dedicated team to run it
• Java Profiling
– VisualVM
– XRebel
Security
• Security Appliance
• Application access log analysis
• Risk & fraud team
• PCI DSS compliance process
What we learn about customer
• Fast UI
– Speed & Performance
• Website stay up during promotion and flash sale
– Scalability & Elasticity
• Consistently good user experience
– Great UI/UX
– Timely order delivery
– Original and high quality product
• New features
– Rapid Deployment
– Continuous Delivery
Architecting for Great Engineering Culture
• Optimize for iteration speed
• Push relentlessly toward automation
• Build the right software abstractions
• Develop a focus on high code quality
with code reviews
• Maintain a respectful work
environment
• Build shared ownership of code
• Invest in automated testing
• Allot 20% time
• Build a culture of learning and
continuous improvement
• Hire the best
Optimize for iteration speed
• Microservices Architecture
• Blibli.com SOA architecture circa 2013
Store Front
Back officeMerchant
ESB
Monolithic vs SOA vs Microservices
Source : http://www.pwc.com/us/en/technology-forecast/2014/cloud-computing/features/microservices.html
Monilithic team
Source : http://www.martinfowler.com/articles/microservices.html
Microservices Team
Source : http://www.martinfowler.com/articles/microservices.html
• Decentralized Governance
Microservices Team
• Decentralized Data Management
Source : http://www.martinfowler.com/articles/microservices.html
Microservices Team
Microservices Team
Push relentlessly toward automation
• Compile, build, unit test every commit using maven / sbt run automaticly using
bamboo CI
• Functional test by QA, automated using JBehave and Appium
• API Test using JMeter
• Release versioned artifact (war / zip) to artifactory
• Deploy to UAT, Performance environment and Production using Chef and Jenkins
– Install latest java
– Setup properties
– Install latest tomcat
– Do additional steps : setup JCE, deploy static file to static server, run database change using
Flyway / MongoBee, etc
– Deploy application
Source : http://www.martinfowler.com/articles/microservices.html
Build the right software abstractions
• Microservices template
– Java with Spring
– PlayFramework Scala
– Java with Spring and RXJava
– Go Lang ??
• SSO using CAS
• OAuth API abstraction using CAS
• Example of software abstractions
– Google BigTable and MapReduce
– Facebook ReactJS and ReactNative
– Amazon AWS
Develop a focus on high code quality with code reviews
• Use GitFlow for code management
– http://nvie.com/posts/a-successful-git-branching-model/
– Every feature and bug will have their own branch
– Developer commit to their own branch and pull request to
feature / bug / develop branch
– Peer code review and successful build from bamboo is
mandatory to merge branch
• Pair Programming if possible
Develop a focus on high code quality with
code reviews
• TDD and Unit testing using JUnit and KarmaJS
• Static code analysis using Sonar Cube
– Calculate unit test coverage
– Calculate code complexity, less than 3
– Code smell
– Security analysis: SQL Injection vulnerability, XSS, etc
– Potential bug in runtime: NullPointerException,
Forever loop, etc
• 90% test coverage expected. Build failed if code
coverage drop compared to previous build. If
build failed, cannot merge to mainstream branch.
Maintain a respectful work environment
• Open culture
• Using Slack for open communication
• Share everything
• RESPECT as core value
– Risk taking
– Excellent
– Serving
– Passionate and Proud
– Employee great place to work
– Customer focus
– Teamwork
Build shared ownership of code
• Access to source code from day 1
• Some degree of rotation to make sure no part
of code that only known to 1 person
Invest in automated testing
• We do not have QA as title, it is Software
Development Engineer in Test (SDET)
• 2017 we really focus on automation
– Bamboo CI
– Chef and Jenkins
– Nightly Build
– Data Preparation
– JBehave & Appium
– JMeter, WAPT & gatling
– Monitoring and alert
– Elasticity on Datacenter
– Etc
Allot 20% time
• Internal coding competition
• Internal Hackaton
• Skunk Work
Build a culture of learning and continuous improvement
• Rotation for people to learn different things
• Survey and Management action for people who want to change their role or team
• Weekly sharing session : BrownBag
• Training
– Java Training and Certification, Sun Certified Enterprise Architect
– iOS development & testing
– SOLR training
– 7 Habit of effective people
– Presentation and public speaking
– Project management
– Leadership essential
– Management assessment
– Evident base interview
– User Experience from Somia
• Conference
– JavaOne in San Francisco
– Solr Revolution in Austin, Texas
– TechInAsia Jakarta
• Scholarship for Master Degree
Hire the Best
• Blibli.com future program
– https://www.blibli.com/page/future-program/
• Employee get Employee
– Best people will attract best people, law of
attraction
• Excruciating round of interview
• Very high hiring bar
We Are Hiring!!
THANK YOU

Contenu connexe

Tendances

MOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITEMOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITEVishal Mittal
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...Serdar Basegmez
 
A Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed ApplicationA Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed ApplicationDavid Hoerster
 
Intro to Front End Frameworks
 Intro to Front End Frameworks Intro to Front End Frameworks
Intro to Front End FrameworksProduct School
 
Curriculum vitae of nguyen hai quy
Curriculum vitae of nguyen hai quyCurriculum vitae of nguyen hai quy
Curriculum vitae of nguyen hai quyHai Quy Nguyen
 
Content as a Service: What to Know About Decoupled CMS
Content as a Service: What to Know About Decoupled CMSContent as a Service: What to Know About Decoupled CMS
Content as a Service: What to Know About Decoupled CMSPantheon
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Adam Mokan
 
jQuery 1.4-1.6 Best new features
jQuery 1.4-1.6 Best new featuresjQuery 1.4-1.6 Best new features
jQuery 1.4-1.6 Best new featuresRyan Blunden
 
Ahmed Anas Elmeneawy
Ahmed Anas ElmeneawyAhmed Anas Elmeneawy
Ahmed Anas ElmeneawyAhmad Anas
 
11 Live Node.js CMS Frameworks
11 Live Node.js CMS Frameworks11 Live Node.js CMS Frameworks
11 Live Node.js CMS FrameworksiScripts
 
Introduction to Web Technology Stacks
Introduction to Web Technology StacksIntroduction to Web Technology Stacks
Introduction to Web Technology StacksPrakarsh -
 
Web development - Developing Web as A Team
Web development -  Developing Web as A TeamWeb development -  Developing Web as A Team
Web development - Developing Web as A TeamMuhammad Akbar Yasin
 
iOS development best practices
iOS development best practicesiOS development best practices
iOS development best practicesMichal Juhas
 
Aspect oriented programming
Aspect oriented programmingAspect oriented programming
Aspect oriented programmingRobert MacLean
 
Selenium for everyone
Selenium for everyoneSelenium for everyone
Selenium for everyoneTft Us
 
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya PallaAdobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya PallaKrishna Chaitanya Palla
 

Tendances (20)

MOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITEMOBILE QUESTIONS & ANSWER WEBSITE
MOBILE QUESTIONS & ANSWER WEBSITE
 
KMS Introduction
KMS IntroductionKMS Introduction
KMS Introduction
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
 
A Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed ApplicationA Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed Application
 
Intro to Front End Frameworks
 Intro to Front End Frameworks Intro to Front End Frameworks
Intro to Front End Frameworks
 
Curriculum vitae of nguyen hai quy
Curriculum vitae of nguyen hai quyCurriculum vitae of nguyen hai quy
Curriculum vitae of nguyen hai quy
 
MEAN Stack
MEAN Stack MEAN Stack
MEAN Stack
 
Content as a Service: What to Know About Decoupled CMS
Content as a Service: What to Know About Decoupled CMSContent as a Service: What to Know About Decoupled CMS
Content as a Service: What to Know About Decoupled CMS
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012
 
jQuery 1.4-1.6 Best new features
jQuery 1.4-1.6 Best new featuresjQuery 1.4-1.6 Best new features
jQuery 1.4-1.6 Best new features
 
Ahmed Anas Elmeneawy
Ahmed Anas ElmeneawyAhmed Anas Elmeneawy
Ahmed Anas Elmeneawy
 
11 Live Node.js CMS Frameworks
11 Live Node.js CMS Frameworks11 Live Node.js CMS Frameworks
11 Live Node.js CMS Frameworks
 
Introduction to Web Technology Stacks
Introduction to Web Technology StacksIntroduction to Web Technology Stacks
Introduction to Web Technology Stacks
 
Web development - Developing Web as A Team
Web development -  Developing Web as A TeamWeb development -  Developing Web as A Team
Web development - Developing Web as A Team
 
Sexy React Stack
Sexy React StackSexy React Stack
Sexy React Stack
 
iOS development best practices
iOS development best practicesiOS development best practices
iOS development best practices
 
Single Page Application
Single Page ApplicationSingle Page Application
Single Page Application
 
Aspect oriented programming
Aspect oriented programmingAspect oriented programming
Aspect oriented programming
 
Selenium for everyone
Selenium for everyoneSelenium for everyone
Selenium for everyone
 
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya PallaAdobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
Adobe AEM(6.0-6.1)_AEM Forms(6.1-6.2)_Developer_KrishnaChaitanya Palla
 

Similaire à Architecting for Hyper Growth and Great Engineering Culture

Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...TriNimbus
 
Abhishek_Resume_Latest
Abhishek_Resume_LatestAbhishek_Resume_Latest
Abhishek_Resume_LatestAbhishek Singh
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAdam Getchell
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitectureAshwini Kuntamukkala
 
Continuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with JenkinsContinuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with Jenkinsecubemarketing
 
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...NUS-ISS
 
AD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension LibraryAD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension Librarypaidi_ed
 
Collaborative Working: University of Sunderland & Roundhouse Digital
Collaborative Working: University of Sunderland & Roundhouse Digital Collaborative Working: University of Sunderland & Roundhouse Digital
Collaborative Working: University of Sunderland & Roundhouse Digital Terminalfour
 
Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Marvin Heery
 
USG Summit - September 2014 - Web Management using Drupal
USG Summit - September 2014 - Web Management using DrupalUSG Summit - September 2014 - Web Management using Drupal
USG Summit - September 2014 - Web Management using DrupalEric Sembrat
 
Student Industrial Training Presentation Slide
Student Industrial Training Presentation SlideStudent Industrial Training Presentation Slide
Student Industrial Training Presentation SlideKhairul Filhan
 
Tuli eServices_Ecommerce portfolio
Tuli eServices_Ecommerce portfolioTuli eServices_Ecommerce portfolio
Tuli eServices_Ecommerce portfolioTULI eServices Inc.
 
Discover - Innovating With Speed and Agility
Discover - Innovating With Speed and AgilityDiscover - Innovating With Speed and Agility
Discover - Innovating With Speed and AgilityLaurenWendler
 
AngularJS - Architecture decisions in a large project 
AngularJS - Architecture decisionsin a large project AngularJS - Architecture decisionsin a large project 
AngularJS - Architecture decisions in a large project Elad Hirsch
 

Similaire à Architecting for Hyper Growth and Great Engineering Culture (20)

Sai_Resume
Sai_ResumeSai_Resume
Sai_Resume
 
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
Chris Munns, DevOps @ Amazon: Microservices, 2 Pizza Teams, & 50 Million Depl...
 
Abhishek_Resume_Latest
Abhishek_Resume_LatestAbhishek_Resume_Latest
Abhishek_Resume_Latest
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
 
Continuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with JenkinsContinuous Integration for OpenVMS with Jenkins
Continuous Integration for OpenVMS with Jenkins
 
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
NUS-ISS Learning Day 2018- Designing software to make the most of cloud platf...
 
AD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension LibraryAD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension Library
 
Collaborative Working: University of Sunderland & Roundhouse Digital
Collaborative Working: University of Sunderland & Roundhouse Digital Collaborative Working: University of Sunderland & Roundhouse Digital
Collaborative Working: University of Sunderland & Roundhouse Digital
 
Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4Introduction To Agile Refresh Savannah July20 2010 V1 4
Introduction To Agile Refresh Savannah July20 2010 V1 4
 
USG Summit - September 2014 - Web Management using Drupal
USG Summit - September 2014 - Web Management using DrupalUSG Summit - September 2014 - Web Management using Drupal
USG Summit - September 2014 - Web Management using Drupal
 
AMIS OOW Review 2012 - Deel 7 - Lucas Jellema
AMIS OOW Review 2012 - Deel 7 - Lucas JellemaAMIS OOW Review 2012 - Deel 7 - Lucas Jellema
AMIS OOW Review 2012 - Deel 7 - Lucas Jellema
 
Student Industrial Training Presentation Slide
Student Industrial Training Presentation SlideStudent Industrial Training Presentation Slide
Student Industrial Training Presentation Slide
 
Shyam pcf
Shyam pcfShyam pcf
Shyam pcf
 
Tuli eServices_Ecommerce portfolio
Tuli eServices_Ecommerce portfolioTuli eServices_Ecommerce portfolio
Tuli eServices_Ecommerce portfolio
 
Venu_Resume_Sharepoint_MVC
Venu_Resume_Sharepoint_MVCVenu_Resume_Sharepoint_MVC
Venu_Resume_Sharepoint_MVC
 
Discover - Innovating With Speed and Agility
Discover - Innovating With Speed and AgilityDiscover - Innovating With Speed and Agility
Discover - Innovating With Speed and Agility
 
Cabot Technology Solutions Inc
Cabot Technology Solutions IncCabot Technology Solutions Inc
Cabot Technology Solutions Inc
 
Elastic-Engineering
Elastic-EngineeringElastic-Engineering
Elastic-Engineering
 
AngularJS - Architecture decisions in a large project 
AngularJS - Architecture decisionsin a large project AngularJS - Architecture decisionsin a large project 
AngularJS - Architecture decisions in a large project 
 

Plus de ifnu bima

Northstar Metrics and OKR
Northstar Metrics and OKRNorthstar Metrics and OKR
Northstar Metrics and OKRifnu bima
 
A brief history of metrics
A brief history of metricsA brief history of metrics
A brief history of metricsifnu bima
 
IT Today IPB 2017 : bring new era of business with e-commerce
IT Today IPB 2017 : bring new era of business with e-commerceIT Today IPB 2017 : bring new era of business with e-commerce
IT Today IPB 2017 : bring new era of business with e-commerceifnu bima
 
java-fundamental-dan-java-web-blibli-dot-com-ilmu-komputer-IPB
java-fundamental-dan-java-web-blibli-dot-com-ilmu-komputer-IPBjava-fundamental-dan-java-web-blibli-dot-com-ilmu-komputer-IPB
java-fundamental-dan-java-web-blibli-dot-com-ilmu-komputer-IPBifnu bima
 
Development di Blibli
Development di BlibliDevelopment di Blibli
Development di Blibliifnu bima
 
solr @ blibli
solr @ bliblisolr @ blibli
solr @ blibliifnu bima
 
Java Technology
Java TechnologyJava Technology
Java Technologyifnu bima
 
Rembug Presentation
Rembug PresentationRembug Presentation
Rembug Presentationifnu bima
 
Free Software Foundation,FSF,Opensource
Free Software Foundation,FSF,OpensourceFree Software Foundation,FSF,Opensource
Free Software Foundation,FSF,Opensourceifnu bima
 
Spring Mvc,Java, Spring
Spring Mvc,Java, SpringSpring Mvc,Java, Spring
Spring Mvc,Java, Springifnu bima
 

Plus de ifnu bima (13)

Northstar Metrics and OKR
Northstar Metrics and OKRNorthstar Metrics and OKR
Northstar Metrics and OKR
 
A brief history of metrics
A brief history of metricsA brief history of metrics
A brief history of metrics
 
Clean code
Clean codeClean code
Clean code
 
IT Today IPB 2017 : bring new era of business with e-commerce
IT Today IPB 2017 : bring new era of business with e-commerceIT Today IPB 2017 : bring new era of business with e-commerce
IT Today IPB 2017 : bring new era of business with e-commerce
 
java-fundamental-dan-java-web-blibli-dot-com-ilmu-komputer-IPB
java-fundamental-dan-java-web-blibli-dot-com-ilmu-komputer-IPBjava-fundamental-dan-java-web-blibli-dot-com-ilmu-komputer-IPB
java-fundamental-dan-java-web-blibli-dot-com-ilmu-komputer-IPB
 
Development di Blibli
Development di BlibliDevelopment di Blibli
Development di Blibli
 
solr @ blibli
solr @ bliblisolr @ blibli
solr @ blibli
 
Java Technology
Java TechnologyJava Technology
Java Technology
 
Spring Mvc
Spring MvcSpring Mvc
Spring Mvc
 
Rembug Presentation
Rembug PresentationRembug Presentation
Rembug Presentation
 
IT Carier
IT CarierIT Carier
IT Carier
 
Free Software Foundation,FSF,Opensource
Free Software Foundation,FSF,OpensourceFree Software Foundation,FSF,Opensource
Free Software Foundation,FSF,Opensource
 
Spring Mvc,Java, Spring
Spring Mvc,Java, SpringSpring Mvc,Java, Spring
Spring Mvc,Java, Spring
 

Architecting for Hyper Growth and Great Engineering Culture

  • 1. Architecting for Hyper Growth and Great Engineering Culture Software Architect Indonesia Community #2 Meetup Ifnu, 26 November 2016
  • 2. Who am I? • Ifnu Bima • Ilmu Komputer IPB • Join blibli in 2012 • Was working for Deustche Bank Singapore • Employee no 69 • Engineers no ~13 • Development Manager – blibli.com Web UI – Mobile Apps : Android, iOS, Windows Phone – Content Management System – Search – Product Discovery : Wishlist, Product Review
  • 3. Architecture Goals • Hyper Growth – X times every year: traffic, transaction, feature, codebase and head count • Great Engineering Culture – Foster innovation – Iteration speed
  • 4. Software Architecture Software architecture refers to the fundamental structures of a software system, the discipline of creating such structures, and the documentation of these structures Software architecture is about making fundamental structural choices which are costly to change once implemented Source : https://en.wikipedia.org/wiki/Software_architecture
  • 5. Software Architect / Principal • Design architecture – Monolithycs vs Microservices – SQL vs NoSQL – Datacenter vs Cloud • Pick Platform, library and provide template – Java vs PHP vs Ruby vs Scala vs Go Lang • Hiring standard – Technical interview – Hiring decision – Training and Certification
  • 6. Functional vs Non Functional Requirement • Functional requirement in Bussiness Requirement Documentation (BRD) • Non Functional Requirement – External Quality • Speed, Performance • Scalability, Elasticity, Reliability • Security – Internal Quality • Unit testing coverage • Code readability, design pattern • Learning curve for new hire
  • 7. Speed – Performance : Server Side • HardDrive & Database is the slowest link • Lots lots lots of caching : – Redis : small but lots of item – Guava : big and slow item, refresh cache with background process • SSD for IO intensive operation : Database, static & image server • Non blocking IO using reactive system • Slow Query monitoring and indexing
  • 8. Speed – Performance : Client Side • Bandwith is the slowest link • Small bandwith : gzip, image compression, minimize css & js, image & html lazy load • Render first, script later: defer 3rd party script • Layout first, content later: layout only using CSS, inline CSS for viewport • Reduce page load & render from 12s to 4s
  • 9. Scalability, Elasticity, Reliability • Stateless application • Externalize session to repository. Currently we use Redis • Externalize scheduler • Microservices – http://martinfowler.com/articles/microservices.html • Reactive System – Non blocking IO – Parallel execution – Future / callback • NoSQL – Solr, elasticsearch – Redis – MongoDB • Go lang ?
  • 10. Performance Monitoring • Newrelic.com • AppDynamic • Realtime and Archived performance monitoring • Performance metrics – Response time, both server and client side – Drill down of time spent in application – Slow query monitoring – Cache monitoring. Cache hit ratio. – Server monitoring : CPU, Memory, I/O and Network
  • 11. Performance Testing and Profiling • JMeter and WAPT, other alternative is Gatling • Dedicated team to run it • Java Profiling – VisualVM – XRebel
  • 12. Security • Security Appliance • Application access log analysis • Risk & fraud team • PCI DSS compliance process
  • 13. What we learn about customer • Fast UI – Speed & Performance • Website stay up during promotion and flash sale – Scalability & Elasticity • Consistently good user experience – Great UI/UX – Timely order delivery – Original and high quality product • New features – Rapid Deployment – Continuous Delivery
  • 14. Architecting for Great Engineering Culture • Optimize for iteration speed • Push relentlessly toward automation • Build the right software abstractions • Develop a focus on high code quality with code reviews • Maintain a respectful work environment • Build shared ownership of code • Invest in automated testing • Allot 20% time • Build a culture of learning and continuous improvement • Hire the best
  • 15. Optimize for iteration speed • Microservices Architecture • Blibli.com SOA architecture circa 2013 Store Front Back officeMerchant ESB
  • 16. Monolithic vs SOA vs Microservices Source : http://www.pwc.com/us/en/technology-forecast/2014/cloud-computing/features/microservices.html
  • 17. Monilithic team Source : http://www.martinfowler.com/articles/microservices.html
  • 18. Microservices Team Source : http://www.martinfowler.com/articles/microservices.html • Decentralized Governance
  • 19. Microservices Team • Decentralized Data Management Source : http://www.martinfowler.com/articles/microservices.html
  • 22. Push relentlessly toward automation • Compile, build, unit test every commit using maven / sbt run automaticly using bamboo CI • Functional test by QA, automated using JBehave and Appium • API Test using JMeter • Release versioned artifact (war / zip) to artifactory • Deploy to UAT, Performance environment and Production using Chef and Jenkins – Install latest java – Setup properties – Install latest tomcat – Do additional steps : setup JCE, deploy static file to static server, run database change using Flyway / MongoBee, etc – Deploy application Source : http://www.martinfowler.com/articles/microservices.html
  • 23. Build the right software abstractions • Microservices template – Java with Spring – PlayFramework Scala – Java with Spring and RXJava – Go Lang ?? • SSO using CAS • OAuth API abstraction using CAS • Example of software abstractions – Google BigTable and MapReduce – Facebook ReactJS and ReactNative – Amazon AWS
  • 24. Develop a focus on high code quality with code reviews • Use GitFlow for code management – http://nvie.com/posts/a-successful-git-branching-model/ – Every feature and bug will have their own branch – Developer commit to their own branch and pull request to feature / bug / develop branch – Peer code review and successful build from bamboo is mandatory to merge branch • Pair Programming if possible
  • 25. Develop a focus on high code quality with code reviews • TDD and Unit testing using JUnit and KarmaJS • Static code analysis using Sonar Cube – Calculate unit test coverage – Calculate code complexity, less than 3 – Code smell – Security analysis: SQL Injection vulnerability, XSS, etc – Potential bug in runtime: NullPointerException, Forever loop, etc • 90% test coverage expected. Build failed if code coverage drop compared to previous build. If build failed, cannot merge to mainstream branch.
  • 26. Maintain a respectful work environment • Open culture • Using Slack for open communication • Share everything • RESPECT as core value – Risk taking – Excellent – Serving – Passionate and Proud – Employee great place to work – Customer focus – Teamwork
  • 27. Build shared ownership of code • Access to source code from day 1 • Some degree of rotation to make sure no part of code that only known to 1 person
  • 28. Invest in automated testing • We do not have QA as title, it is Software Development Engineer in Test (SDET) • 2017 we really focus on automation – Bamboo CI – Chef and Jenkins – Nightly Build – Data Preparation – JBehave & Appium – JMeter, WAPT & gatling – Monitoring and alert – Elasticity on Datacenter – Etc
  • 29. Allot 20% time • Internal coding competition • Internal Hackaton • Skunk Work
  • 30. Build a culture of learning and continuous improvement • Rotation for people to learn different things • Survey and Management action for people who want to change their role or team • Weekly sharing session : BrownBag • Training – Java Training and Certification, Sun Certified Enterprise Architect – iOS development & testing – SOLR training – 7 Habit of effective people – Presentation and public speaking – Project management – Leadership essential – Management assessment – Evident base interview – User Experience from Somia • Conference – JavaOne in San Francisco – Solr Revolution in Austin, Texas – TechInAsia Jakarta • Scholarship for Master Degree
  • 31. Hire the Best • Blibli.com future program – https://www.blibli.com/page/future-program/ • Employee get Employee – Best people will attract best people, law of attraction • Excruciating round of interview • Very high hiring bar