SlideShare a Scribd company logo
Building a modern SaaS in 2020
Nikolay Stoitsev, Engineering Manager @ Halo DX
Building a modern SaaS in 2020
Building a modern SaaS in 2020
Building a modern SaaS in 2020
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Multitenancy
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Multitenancy
Language evaluation
Python
JavaScript/Node.js
Java
C#/.NET Core
Domain Specifics
FIPS 140-2
Node.js
Can build with special OpenSSL
Java
Package with verified implementation of cryptographic algorithms
Building a modern SaaS in 2020
Building a modern SaaS in 2020
DICOM
Imaging
Center
Imaging
Center Hospital
HL7
Imaging
Center Hospital
HL7 DICOM
Java and Spring Boot
Angular
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Multitenancy
MicroservicesDiscovery
MicroservicesDiscovery
Load Balancing
MicroservicesDiscovery
Load Balancing
Circuit Breaking
MicroservicesDiscovery
Load Balancing
Circuit Breaking
Testing
MicroservicesDiscovery
Load Balancing
Circuit Breaking
Testing
Debugging
Monolith
Failure Isolation
6 services
Hexagonal Architecture
Web
Adapter
Messaging
Adapter
Input Port
Input Port
Biz Logic
Output Port
Output Port
Persistence
Adapter
Messaging
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Multitenancy
Multi Repo
vs
Mono Repo
Mono Repo
Easily introduce and refactor
global features
Ease code sharing and reuse
Simple dependency management
Flexible team boundaries and code
ownership
Collaboration across teams
Atomic commits across services
Build System
Bazel
● Fast and incremental builds
● One tool to build multiple
languages
● Extensible
● Google, Pinterest, Uber,
Stripe
Buck
● Fast and incremental builds
● One tool to build multiple
languages
● Helps you better understand
your dependencies
● Facebook, Airbnb
Multi-Project Builds in
Gradle
Multi-Project Builds in Gradle
● One root project
● One subproject for each service
● One subproject for shared libs
● https://docs.gradle.org/current/userguide/multi_project_builds.html
Multi-Project Builds in Gradle
Nx for front-end
monorepo
https://github.com/nrwl/nx
Gradle wrapper for front-end builds and running tests
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Multitenancy
Separate Dockerfile
for each service
Can have one Docker Compose for everything
Nexus
https://www.sonatype.com/nexus/repository-oss
Why Nexus?
Can store and distribute
Maven/Java, npm, Helm, Docker
Widely adopted
Single source of truth for every
component
Easy to work with
Build Process
CI
Code
Build Process
CI CD
Code
Build Process
CI CD
Build
Docker
Image
Code
Build Process
CI CD
Nexus
Build
Docker
Image
Code
Docker
Image
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Multitenancy
Kubernetes
https://kubernetes.io
Why Kubernetes?
Deployment
Scaling
Self-healing
Inter-service communication
Storage orchestration
Scalable and battle tested
Great for engineers
● Each service is accessed via a single domain
● Logs are easy to read
● A lot of materials on how to learn it
https://github.com/rancher/rancher
Monitoring and Grafana out of the box
Configuring a service
in Kubernetes
● Deployment
● Service
● Config Map
● Service Account
● RBAC
● Pod disruption budget
● ....
Helm
https://github.com/helm/helm
Helm
● Abstraction over k8s that simplifies working with it
● The building block in helm is called a helm chart
● Help you define, install, and upgrade applications in k8s
How to work with Helm
● Search for “{technology} helm chart”
● Download helm chart
● Update values.yaml
● $ helm install {release-name} {chart-name} --set {var}={val}
Deploy Process
CI CD
Nexus
Build
Docker
Image
Docker
Image
Deploy Process
CI CD
Nexus
KubernetesKubernetesKubernetes
Deploy Process
CI CD
Nexus
Helm
Update
KubernetesKubernetesKubernetes
Deploy Process
CI CD
Nexus
Helm
Update
KubernetesKubernetesKubernetes
Pull Image
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Multitenancy
SLF4J backed by Log4j2
https://github.com/qos-ch/slf4j
Backend logging
EFK - Elasticsearch, Fluentd, Kibana
Pod
Pod
Pod
Backend logging
EFK - Elasticsearch, Fluentd, Kibana
Pod
Pod
Pod
Fluentd
Fluentd
Fluentd
Backend logging
EFK - Elasticsearch, Fluentd, Kibana
Pod
Pod
Pod
Fluentd
Fluentd
Fluentd
Elasticsearch
Backend logging
EFK - Elasticsearch, Fluentd, Kibana
Pod
Pod
Pod
Fluentd
Fluentd
Fluentd
Elasticsearch Kibana
Front-end logging
Front End Logging Library
Front End Logging Library
Front End Logging
front end lib
front end lib
Front End Logging
Backend
Service
Backend
Service
front end lib
front end lib
Front End Logging
Backend
Service
Backend
Service
Fluentd
Fluentd
front end lib
front end lib
Front End Logging
Backend
Service
Backend
Service
Fluentd
Fluentd
Elasticsearch
Kibana
front end lib
front end lib
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Multitenancy
Subtenancy
Org
East West
Sales
Front
Desk
Sales
Front
Desk
Materialized path
(1) Org
(2) East (3) West
(4) Sales
(5) Front
Desk
(6) Sales
(7) Front
Desk
ID Path Name
1 1/ Org
2 1/2/ East
3 1/3/ West
4 1/2/4 Sales East
5 1/2/5 Front Desk East
6 1/3/6 Sales West
7 1/3/7 Front Desk West
Closure table
(1) Org
(2) East (3) West
(4) Sales
(5) Front
Desk
(6) Sales
(7) Front
Desk
ID Name
1 Org
2 East
3 West
4 Sales East
5 Front Desk East
6 Sales West
7 Front Desk West
Ancestor Descendant
1 2
1 3
1 4
1 5
1 6
1 7
2 4
2 5
3 6
3 7
4 Null
Keeping hierarchy and data separated
(1) Org
(2) East (3) West
(4) Sales
(5) Front
Desk
(6) Sales
(7) Front
Desk
● Each records get a tag - 1, 2, 3, etc.
● Each tag points to a node in the tree
● Tag hierarchy is loaded separately
● Queries are decorated with OR
statements to match by tag
Benchmark
Benchmark
Language Java and Spring Boot
Language
Architecture
Java and Spring Boot
Microservices
Language
Architecture
Repo Structure
Java and Spring Boot
Microservices
Monorepo
Language
Architecture
Repo Structure
Builds
Java and Spring Boot
Microservices
Monorepo
Gradle and Docker
Language
Architecture
Repo Structure
Builds
Running in Production
Java and Spring Boot
Microservices
Monorepo
Gradle and Docker
Kubernetes
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Java and Spring Boot
Microservices
Monorepo
Gradle and Docker
Kubernetes
EFK stack
Language
Architecture
Repo Structure
Builds
Running in Production
Observability
Multitenancy
Java and Spring Boot
Microservices
Monorepo
Gradle and Docker
Kubernetes
EFK stack
Separate hierarchy
and data
Thank you! Q&A
Nikolay Stoitsev
Engineering Manager at Halo DX

More Related Content

What's hot (20)

PDF
InfluxDB Client Libraries and Applications by Ivan Kudibal, Engineering Manag...
InfluxData
 
PDF
Istio By Example (extended version)
Josef Adersberger
 
PPTX
Spark Summit - Mobius C# Binding for Apache Spark
shareddatamsft
 
PDF
Building streaming applications using a managed Kafka service | DevNation Tec...
Red Hat Developers
 
PDF
Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...
Natan Silnitsky
 
PDF
Zero downtime deployment of micro-services with Kubernetes
Wojciech Barczyński
 
PDF
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
Docker, Inc.
 
PDF
Kubernetes debug like a pro
Gianluca Arbezzano
 
PDF
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
María Angélica Bracho
 
PDF
K8s Pod Scheduling - Deep Dive. By Tsahi Duek.
Cloud Native Day Tel Aviv
 
PDF
Running I/O intensive workloads on Kubernetes, by Nati Shalom
Cloud Native Day Tel Aviv
 
PDF
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
KubeAcademy
 
PDF
Paris Container Day 2016 : Orchestrating Continuous Delivery (CloudBees)
Publicis Sapient Engineering
 
PDF
Orchestrating the execution of workflows for media streaming service and even...
Shuen-Huei Guan
 
PDF
ApacheCon 2021 - Apache NiFi Deep Dive 300
Timothy Spann
 
PDF
The Paved PaaS to Microservices at Netflix (IAS2017 Nanjing)
Yunong Xiao
 
PDF
Edge architecture ieee international conference on cloud engineering
Mikey Cohen - Hiring Amazing Engineers
 
ODP
2018 04-06 kubernetes ingress in production
Sandor Szuecs
 
PDF
kubernetes operators
Juraj Hantak
 
PPTX
Ingress overview
Harshal Shah
 
InfluxDB Client Libraries and Applications by Ivan Kudibal, Engineering Manag...
InfluxData
 
Istio By Example (extended version)
Josef Adersberger
 
Spark Summit - Mobius C# Binding for Apache Spark
shareddatamsft
 
Building streaming applications using a managed Kafka service | DevNation Tec...
Red Hat Developers
 
Polyglot, Fault Tolerant Event-Driven Programming with Kafka, Kubernetes and ...
Natan Silnitsky
 
Zero downtime deployment of micro-services with Kubernetes
Wojciech Barczyński
 
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
Docker, Inc.
 
Kubernetes debug like a pro
Gianluca Arbezzano
 
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
María Angélica Bracho
 
K8s Pod Scheduling - Deep Dive. By Tsahi Duek.
Cloud Native Day Tel Aviv
 
Running I/O intensive workloads on Kubernetes, by Nati Shalom
Cloud Native Day Tel Aviv
 
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
KubeAcademy
 
Paris Container Day 2016 : Orchestrating Continuous Delivery (CloudBees)
Publicis Sapient Engineering
 
Orchestrating the execution of workflows for media streaming service and even...
Shuen-Huei Guan
 
ApacheCon 2021 - Apache NiFi Deep Dive 300
Timothy Spann
 
The Paved PaaS to Microservices at Netflix (IAS2017 Nanjing)
Yunong Xiao
 
Edge architecture ieee international conference on cloud engineering
Mikey Cohen - Hiring Amazing Engineers
 
2018 04-06 kubernetes ingress in production
Sandor Szuecs
 
kubernetes operators
Juraj Hantak
 
Ingress overview
Harshal Shah
 

Similar to Building a modern SaaS in 2020 (20)

PDF
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
Amazon Web Services Korea
 
PDF
From CoreOS to Kubernetes and Concourse CI
Denis Izmaylov
 
PDF
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
Josh Padnick
 
PDF
AKS: k8s e azure
Alessandro Melchiori
 
PDF
Dynamic infrastructure for development
Balázs Rostás
 
PDF
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
Ambassador Labs
 
PPTX
Continuous deployment of polyglot microservices: A practical approach
Juan Larriba
 
PPTX
Kubernetes And Istio and Azure AKS DevOps
Ofir Makmal
 
PDF
Lunar Way and the Cloud Native "stack"
Kasper Nissen
 
PDF
Kubernetes Architecture - beyond a black box - Part 1
Hao H. Zhang
 
PDF
Stay productive while slicing up the monolith
Markus Eisele
 
PDF
Stay productive while slicing up the monolith
Markus Eisele
 
PPTX
Aks: k8s e azure
Alessandro Melchiori
 
PDF
The elements of kubernetes
Aaron Schlesinger
 
PDF
Saturn 2019 - Serveless Integration on Kubernetes/OpenShift by Kurt Stam
Kurt Stam
 
PPTX
A docker love story
Brian de Heus
 
PDF
Stay productive while slicing up the monolith
Markus Eisele
 
PDF
meetup version of Paving the road to production
Matthew Reynolds
 
PDF
stackconf 2020 | The blinking cursor or kubernetes for people who aren´t supp...
NETWAYS
 
ODP
The journey to container adoption in enterprise
Igor Moochnick
 
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
Amazon Web Services Korea
 
From CoreOS to Kubernetes and Concourse CI
Denis Izmaylov
 
Play Framework + Docker + CircleCI + AWS + EC2 Container Service
Josh Padnick
 
AKS: k8s e azure
Alessandro Melchiori
 
Dynamic infrastructure for development
Balázs Rostás
 
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
Ambassador Labs
 
Continuous deployment of polyglot microservices: A practical approach
Juan Larriba
 
Kubernetes And Istio and Azure AKS DevOps
Ofir Makmal
 
Lunar Way and the Cloud Native "stack"
Kasper Nissen
 
Kubernetes Architecture - beyond a black box - Part 1
Hao H. Zhang
 
Stay productive while slicing up the monolith
Markus Eisele
 
Stay productive while slicing up the monolith
Markus Eisele
 
Aks: k8s e azure
Alessandro Melchiori
 
The elements of kubernetes
Aaron Schlesinger
 
Saturn 2019 - Serveless Integration on Kubernetes/OpenShift by Kurt Stam
Kurt Stam
 
A docker love story
Brian de Heus
 
Stay productive while slicing up the monolith
Markus Eisele
 
meetup version of Paving the road to production
Matthew Reynolds
 
stackconf 2020 | The blinking cursor or kubernetes for people who aren´t supp...
NETWAYS
 
The journey to container adoption in enterprise
Igor Moochnick
 
Ad

More from Nikolay Stoitsev (20)

PDF
Building vs Buying Software
Nikolay Stoitsev
 
PDF
How and why to manage your manager
Nikolay Stoitsev
 
PDF
From programming to management
Nikolay Stoitsev
 
PDF
A practical introduction to observability
Nikolay Stoitsev
 
PDF
Everything You Need to Know About NewSQL in 2020
Nikolay Stoitsev
 
PDF
3 lessons on effective communication for engineers
Nikolay Stoitsev
 
PDF
The career path of software engineers and how to navigate it
Nikolay Stoitsev
 
PDF
Migrating a data intensive microservice from Python to Go
Nikolay Stoitsev
 
PDF
Large scale stream processing with Apache Flink
Nikolay Stoitsev
 
PDF
NewSQL: what, when and how
Nikolay Stoitsev
 
PDF
How to read the v8 source code?
Nikolay Stoitsev
 
PDF
Running in multiple data centers
Nikolay Stoitsev
 
PDF
Distributed tracing for big systems
Nikolay Stoitsev
 
PDF
Reusable patterns for scalable APIs running on Docker @ Java2Days
Nikolay Stoitsev
 
PDF
Everyday tools and tricks for scaling Node.js
Nikolay Stoitsev
 
PDF
Node.js at Uber
Nikolay Stoitsev
 
PDF
Tracing python applications
Nikolay Stoitsev
 
PDF
Distributed tracing for Node.js
Nikolay Stoitsev
 
PDF
Design Patterns for Docker Applications
Nikolay Stoitsev
 
PDF
From Python to Java
Nikolay Stoitsev
 
Building vs Buying Software
Nikolay Stoitsev
 
How and why to manage your manager
Nikolay Stoitsev
 
From programming to management
Nikolay Stoitsev
 
A practical introduction to observability
Nikolay Stoitsev
 
Everything You Need to Know About NewSQL in 2020
Nikolay Stoitsev
 
3 lessons on effective communication for engineers
Nikolay Stoitsev
 
The career path of software engineers and how to navigate it
Nikolay Stoitsev
 
Migrating a data intensive microservice from Python to Go
Nikolay Stoitsev
 
Large scale stream processing with Apache Flink
Nikolay Stoitsev
 
NewSQL: what, when and how
Nikolay Stoitsev
 
How to read the v8 source code?
Nikolay Stoitsev
 
Running in multiple data centers
Nikolay Stoitsev
 
Distributed tracing for big systems
Nikolay Stoitsev
 
Reusable patterns for scalable APIs running on Docker @ Java2Days
Nikolay Stoitsev
 
Everyday tools and tricks for scaling Node.js
Nikolay Stoitsev
 
Node.js at Uber
Nikolay Stoitsev
 
Tracing python applications
Nikolay Stoitsev
 
Distributed tracing for Node.js
Nikolay Stoitsev
 
Design Patterns for Docker Applications
Nikolay Stoitsev
 
From Python to Java
Nikolay Stoitsev
 
Ad

Recently uploaded (20)

PDF
What companies do with Pharo (ESUG 2025)
ESUG
 
PPTX
TRAVEL APIs | WHITE LABEL TRAVEL API | TOP TRAVEL APIs
philipnathen82
 
PDF
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
PPTX
Chess King 25.0.0.2500 With Crack Full Free Download
cracked shares
 
PDF
Infrastructure planning and resilience - Keith Hastings.pptx.pdf
Safe Software
 
PPTX
TexSender Pro 8.9.1 Crack Full Version Download
cracked shares
 
PDF
AI Software Engineering based on Multi-view Modeling and Engineering Patterns
Hironori Washizaki
 
PDF
Why Are More Businesses Choosing Partners Over Freelancers for Salesforce.pdf
Cymetrix Software
 
PPTX
Presentation about variables and constant.pptx
kr2589474
 
PDF
Protecting the Digital World Cyber Securit
dnthakkar16
 
PDF
System Center 2025 vs. 2022; What’s new, what’s next_PDF.pdf
Q-Advise
 
PDF
Salesforce Pricing Update 2025: Impact, Strategy & Smart Cost Optimization wi...
GetOnCRM Solutions
 
PDF
Balancing Resource Capacity and Workloads with OnePlan – Avoid Overloading Te...
OnePlan Solutions
 
PDF
Virtual Threads in Java: A New Dimension of Scalability and Performance
Tier1 app
 
PPTX
Employee salary prediction using Machine learning Project template.ppt
bhanuk27082004
 
PDF
Step-by-Step Guide to Install SAP HANA Studio | Complete Installation Tutoria...
SAP Vista, an A L T Z E N Company
 
PDF
New Download FL Studio Crack Full Version [Latest 2025]
imang66g
 
PDF
Download iTop VPN Free 6.1.0.5882 Crack Full Activated Pre Latest 2025
imang66g
 
PPTX
Presentation about Database and Database Administrator
abhishekchauhan86963
 
PDF
How Agentic AI Networks are Revolutionizing Collaborative AI Ecosystems in 2025
ronakdubey419
 
What companies do with Pharo (ESUG 2025)
ESUG
 
TRAVEL APIs | WHITE LABEL TRAVEL API | TOP TRAVEL APIs
philipnathen82
 
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
Chess King 25.0.0.2500 With Crack Full Free Download
cracked shares
 
Infrastructure planning and resilience - Keith Hastings.pptx.pdf
Safe Software
 
TexSender Pro 8.9.1 Crack Full Version Download
cracked shares
 
AI Software Engineering based on Multi-view Modeling and Engineering Patterns
Hironori Washizaki
 
Why Are More Businesses Choosing Partners Over Freelancers for Salesforce.pdf
Cymetrix Software
 
Presentation about variables and constant.pptx
kr2589474
 
Protecting the Digital World Cyber Securit
dnthakkar16
 
System Center 2025 vs. 2022; What’s new, what’s next_PDF.pdf
Q-Advise
 
Salesforce Pricing Update 2025: Impact, Strategy & Smart Cost Optimization wi...
GetOnCRM Solutions
 
Balancing Resource Capacity and Workloads with OnePlan – Avoid Overloading Te...
OnePlan Solutions
 
Virtual Threads in Java: A New Dimension of Scalability and Performance
Tier1 app
 
Employee salary prediction using Machine learning Project template.ppt
bhanuk27082004
 
Step-by-Step Guide to Install SAP HANA Studio | Complete Installation Tutoria...
SAP Vista, an A L T Z E N Company
 
New Download FL Studio Crack Full Version [Latest 2025]
imang66g
 
Download iTop VPN Free 6.1.0.5882 Crack Full Activated Pre Latest 2025
imang66g
 
Presentation about Database and Database Administrator
abhishekchauhan86963
 
How Agentic AI Networks are Revolutionizing Collaborative AI Ecosystems in 2025
ronakdubey419
 

Building a modern SaaS in 2020