SlideShare a Scribd company logo
1 of 32
Download to read offline
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

More Related Content

What's hot

Windows 7 v/ Kristian Svantorp Microsoft
Windows 7 v/ Kristian Svantorp MicrosoftWindows 7 v/ Kristian Svantorp Microsoft
Windows 7 v/ Kristian Svantorp Microsoft
guestb7fda43
 

What's hot (20)

Writing S.O.L.I.D Code
Writing S.O.L.I.D CodeWriting S.O.L.I.D Code
Writing S.O.L.I.D Code
 
Windows 7 v/ Kristian Svantorp Microsoft
Windows 7 v/ Kristian Svantorp MicrosoftWindows 7 v/ Kristian Svantorp Microsoft
Windows 7 v/ Kristian Svantorp Microsoft
 
Writing Testable Code in SharePoint
Writing Testable Code in SharePointWriting Testable Code in SharePoint
Writing Testable Code in SharePoint
 
DevSecOps Introduction Tushar Joshi - Owasp Nagpur Meetup 12 May 2019
DevSecOps Introduction    Tushar Joshi - Owasp Nagpur Meetup 12 May 2019DevSecOps Introduction    Tushar Joshi - Owasp Nagpur Meetup 12 May 2019
DevSecOps Introduction Tushar Joshi - Owasp Nagpur Meetup 12 May 2019
 
How Capital One Scaled API Design to Deliver New Products Faster
How Capital One Scaled API Design to Deliver New Products FasterHow Capital One Scaled API Design to Deliver New Products Faster
How Capital One Scaled API Design to Deliver New Products Faster
 
Modern Agile Software Architecture
Modern Agile Software ArchitectureModern Agile Software Architecture
Modern Agile Software Architecture
 
A better approach for testing microservices - introducing test kits in practice
A better approach for testing microservices - introducing test kits in practiceA better approach for testing microservices - introducing test kits in practice
A better approach for testing microservices - introducing test kits in practice
 
The DevOps Journey
The DevOps JourneyThe DevOps Journey
The DevOps Journey
 
DevOps made simple - Understand DevOps and steps to become a DevOps expert
DevOps made simple  - Understand DevOps and steps to become a DevOps expertDevOps made simple  - Understand DevOps and steps to become a DevOps expert
DevOps made simple - Understand DevOps and steps to become a DevOps expert
 
CNS Presentation
CNS PresentationCNS Presentation
CNS Presentation
 
OReilly Software Architecture Conference: Architecture as code - objective m...
OReilly Software Architecture Conference:  Architecture as code - objective m...OReilly Software Architecture Conference:  Architecture as code - objective m...
OReilly Software Architecture Conference: Architecture as code - objective m...
 
Do you need microservices architecture?
Do you need microservices architecture?Do you need microservices architecture?
Do you need microservices architecture?
 
Infrastructure code in Agile software development
Infrastructure code in Agile software developmentInfrastructure code in Agile software development
Infrastructure code in Agile software development
 
Leave visual studio behind an end to end business app in 30 mins using a paas
Leave visual studio behind an end to end business app in 30 mins using a paasLeave visual studio behind an end to end business app in 30 mins using a paas
Leave visual studio behind an end to end business app in 30 mins using a paas
 
Rasa Open Source - What's next?
Rasa Open Source - What's next?Rasa Open Source - What's next?
Rasa Open Source - What's next?
 
Microdeployments for microservices dev ops nashville
Microdeployments for microservices   dev ops nashvilleMicrodeployments for microservices   dev ops nashville
Microdeployments for microservices dev ops nashville
 
Enable DevSecOps using JIRA Software
Enable DevSecOps using JIRA SoftwareEnable DevSecOps using JIRA Software
Enable DevSecOps using JIRA Software
 
InterConnect 2017 : Programming languages in the enterprise: Which language s...
InterConnect 2017 : Programming languages in the enterprise: Which language s...InterConnect 2017 : Programming languages in the enterprise: Which language s...
InterConnect 2017 : Programming languages in the enterprise: Which language s...
 
Training Webinar: Fitting OutSystems applications into Enterprise Architecture
Training Webinar: Fitting OutSystems applications into Enterprise ArchitectureTraining Webinar: Fitting OutSystems applications into Enterprise Architecture
Training Webinar: Fitting OutSystems applications into Enterprise Architecture
 
20160422 Speedy Framework Enterprise Application Development Platform
20160422 Speedy Framework Enterprise Application Development Platform20160422 Speedy Framework Enterprise Application Development Platform
20160422 Speedy Framework Enterprise Application Development Platform
 

Viewers also liked

Crash course - managing software people and teams (engineering leadership sig...
Crash course - managing software people and teams (engineering leadership sig...Crash course - managing software people and teams (engineering leadership sig...
Crash course - managing software people and teams (engineering leadership sig...
Ron Lichty
 

Viewers also liked (20)

Software Architecture Introduction
Software Architecture IntroductionSoftware Architecture Introduction
Software Architecture Introduction
 
How to work with us? We are Gen Y!
How to work with us? We are Gen Y!How to work with us? We are Gen Y!
How to work with us? We are Gen Y!
 
Software Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skillSoftware Architecture Fundamentals Part-1 Architecture soft skill
Software Architecture Fundamentals Part-1 Architecture soft skill
 
Is your code SOLID enough?
 Is your code SOLID enough? Is your code SOLID enough?
Is your code SOLID enough?
 
Arquitetura software
Arquitetura softwareArquitetura software
Arquitetura software
 
Service excellence
Service excellenceService excellence
Service excellence
 
Email Marketing for ECommerce: Creating personalized experiences
Email Marketing for ECommerce: Creating personalized experiencesEmail Marketing for ECommerce: Creating personalized experiences
Email Marketing for ECommerce: Creating personalized experiences
 
E-Commerce blibli.com
E-Commerce blibli.comE-Commerce blibli.com
E-Commerce blibli.com
 
DevOps: Why Culture Matters
DevOps:  Why Culture MattersDevOps:  Why Culture Matters
DevOps: Why Culture Matters
 
Adopting Devops , Stories from the trenches
Adopting Devops , Stories from the trenchesAdopting Devops , Stories from the trenches
Adopting Devops , Stories from the trenches
 
What Makes A Great Leader Poster # Final 4 By Tlc Solutions May 2010
What Makes A Great Leader Poster # Final 4 By Tlc Solutions May 2010What Makes A Great Leader Poster # Final 4 By Tlc Solutions May 2010
What Makes A Great Leader Poster # Final 4 By Tlc Solutions May 2010
 
Going Big
Going BigGoing Big
Going Big
 
Jason Medley - Quirky's Recruiting Culture
Jason Medley - Quirky's Recruiting CultureJason Medley - Quirky's Recruiting Culture
Jason Medley - Quirky's Recruiting Culture
 
Agile india 2014 Presentation
Agile india 2014 PresentationAgile india 2014 Presentation
Agile india 2014 Presentation
 
How to move forward to a DevOps Culture?
How to move forward to a DevOps Culture?How to move forward to a DevOps Culture?
How to move forward to a DevOps Culture?
 
Crash course - managing software people and teams (engineering leadership sig...
Crash course - managing software people and teams (engineering leadership sig...Crash course - managing software people and teams (engineering leadership sig...
Crash course - managing software people and teams (engineering leadership sig...
 
DevOps Culture as a tool
DevOps Culture as a toolDevOps Culture as a tool
DevOps Culture as a tool
 
More than Technology - The Culture of DevOps
More than Technology - The Culture of DevOpsMore than Technology - The Culture of DevOps
More than Technology - The Culture of DevOps
 
5 Steps for a High-Performing DevOps Culture
5 Steps for a High-Performing DevOps Culture5 Steps for a High-Performing DevOps Culture
5 Steps for a High-Performing DevOps Culture
 
SMAC: The Key to Getting Traction with DevOps
SMAC: The Key to Getting Traction with DevOpsSMAC: The Key to Getting Traction with DevOps
SMAC: The Key to Getting Traction with DevOps
 

Similar to Architecting for Huper Growth and Great Engineering Culture

Abhishek_Resume_Latest
Abhishek_Resume_LatestAbhishek_Resume_Latest
Abhishek_Resume_Latest
Abhishek Singh
 
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
Marvin Heery
 

Similar to Architecting for Huper 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
 
Selenium for everyone
Selenium for everyoneSelenium for everyone
Selenium for everyone
 
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
 

More from SARCCOM

More from SARCCOM (13)

Week 3 Deep Learning And POS Tagging Hands-On
Week 3 Deep Learning And POS Tagging Hands-OnWeek 3 Deep Learning And POS Tagging Hands-On
Week 3 Deep Learning And POS Tagging Hands-On
 
Week 2 Sentiment Analysis Using Machine Learning
Week 2 Sentiment Analysis Using Machine Learning Week 2 Sentiment Analysis Using Machine Learning
Week 2 Sentiment Analysis Using Machine Learning
 
Week 1 Natural Language Processing Introduction
Week 1  Natural Language Processing IntroductionWeek 1  Natural Language Processing Introduction
Week 1 Natural Language Processing Introduction
 
The Secret of Most Wanted Geek
The Secret of Most Wanted GeekThe Secret of Most Wanted Geek
The Secret of Most Wanted Geek
 
Fundamental of Machine Learning
Fundamental of Machine LearningFundamental of Machine Learning
Fundamental of Machine Learning
 
Data Warehousing Tools on Data Ecosystem
Data Warehousing Tools on Data EcosystemData Warehousing Tools on Data Ecosystem
Data Warehousing Tools on Data Ecosystem
 
Startup Engineering Culture
Startup Engineering CultureStartup Engineering Culture
Startup Engineering Culture
 
Menggapai Paripurna Rekayasa
Menggapai Paripurna RekayasaMenggapai Paripurna Rekayasa
Menggapai Paripurna Rekayasa
 
Requirement Gathering Jump Start
Requirement Gathering Jump StartRequirement Gathering Jump Start
Requirement Gathering Jump Start
 
Legacy code - Taming The Beast
Legacy code  - Taming The BeastLegacy code  - Taming The Beast
Legacy code - Taming The Beast
 
The Role of IT Architect in Enterprise Company (Garuda Indonesia)
The Role of IT Architect in Enterprise Company (Garuda Indonesia)The Role of IT Architect in Enterprise Company (Garuda Indonesia)
The Role of IT Architect in Enterprise Company (Garuda Indonesia)
 
The Role of IT Architect in Startup Company
The Role of IT Architect in Startup CompanyThe Role of IT Architect in Startup Company
The Role of IT Architect in Startup Company
 
Implement OpenSAMM on blibli.com
Implement OpenSAMM on blibli.comImplement OpenSAMM on blibli.com
Implement OpenSAMM on blibli.com
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

Architecting for Huper 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