SlideShare a Scribd company logo
1 of 37
Download to read offline
myOnboarding
Iterating fast with the MERN stack
Haufe TEC Day, September 26th 2019
Martin Danielsson
martin.danielsson@haufe-lexware.com
Twitter & GitHub: donmartin76
whoami
C:> WINDOWS.EXE
C/C++/C# Background
10+ years
C:> WINDOWS.EXE
C/C++/C# Background
10+ years
$ docker ps
Containers & Kubernetes
Since ~4 years
$ docker ps
Containers & Kubernetes
Since ~4 years
wicked.haufe.io maintainer
OSS API Management
Solution Architect
(CTO Office)
Developer
since 2006
Our Solution
Two Components:
• SaaS Web CMS for
HR and all
Supervisors
• Mobile App for iOS
and Android, and a
responsive Web
Site for
Onboardees
(iOS 9 & Android 6)
Haufe myOnboarding
App
Content- und Taskmanagement over Control Center
Responsive Website for Onboardees
Why myOnboarding?
1
Signed
Contract
2
First Wor-
king Day
3
End of
probation
Employee motivation /
Productivity increase
Time
Without onboarding
Quitting Threshold
EmployeeMotivation/Productivitiy
Without onboarding
Risk of leaving company
2-3 months 6 months
Dimensions of Onboarding
Dimension
TIME
PreBoarding 1st working day Integration
Content
Processes
Integration
Engagement
Feedback
Team Setup
Development+UI/UX
Barcelona and Freiburg
Product Management
Product and Marketing Intrapreneurs
Freiburg
Marketing Management
Freiburg
Business Development
Management
Freiburg
Sales Support
Implementation
Consulting (clevis)
Core Team:
Daily/Bi-Weekly Exchange
(Mostly) Shared OKRs
Fully Responsible Product Team
MERN – The Tech Stack
MERN – What?
MEANMEANMEAN
Actually, MERNKUPFWKPGBP…
I bet 50% is missing…
JS(ON) all the way down… (1)
Payloads are always JSON,
no need to think
JSON handled natively
by node.js and browsers
MongoDB stores (and indexes)
JSON natively. How convenient.
Programming language
is always JavaScript
JS(ON) all the way down… (2)
Increased
Productivity
Moving between frontend
and backend is less challenging
Tooling similar for
Frontend and Backend
Entire Stack runs easily
on a developer laptop
Same Tech for sharing
libraries (npm) everywhere
Lightweight programming,
Fast first implementations
Drawbacks
Technology Major Drawback
JavaScript No Type Safety ( TypeScript)
MongoDB Schemaless (weeeell…)
React Extremely fast moving
Express.js --
Architecture
Client Types
CMS and Web App
React Single Page
Applications
Served via nginx
static web server
Mobile App
Mobile App iOS/Android
via react-native
Cross compiled to
iOS and Android
Similar programming
as CMS/Web App
Communicate with
Backend via REST API
Secured via OAuth2 SSO Support
Integration Clients
myOnboarding Command
Line Interface
Umantis Bewerber-
Management
Custom Integrations via
API Management
Architecture
Kubernetes (Azure AKS-Engine)Kubernetes (Azure AKS-Engine)
CMSCMSAPIGateway
(wicked/kong)
APIGateway
(wicked/kong)
Auth
Server
Auth
Server
PeoplePeople
ContentContent
GrafanaGrafana
Notific-
ations
Notific-
ations
Sche-
duler
Sche-
duler
Permis-
sions
Permis-
sions
Integ-
ration
Plans
Integ-
ration
Plans
Prome-
theus
Prome-
theus
Alert
manager
Alert
manager
Web AppWeb App
Mongo DB
(Atlas, managed
service)
Mongo DB
(Atlas, managed
service)
IngressController(SSL)IngressController(SSL)
TasksTasks MediaMedia
System
Compo-
nent
System
Compo-
nent
Nginx
Static
Nginx
Static Micro-
Service
Micro-
Service
BrowserBrowser
Mobile AppMobile App
OAuth2.0
Integrations
(mO CLI,
Umantis,…)
Integrations
(mO CLI,
Umantis,…)
No state
inside k8s
cluster!
No state
inside k8s
cluster!
ServiceService
ServiceService
Key Design Principles
API
ClientClient
API GatewayAPI Gateway
ServiceService
IntegrationIntegration
Mobile
Client
Mobile
Client
Bounded Context
Functionality
Functionality
Functionality
Mongo
DB
Mongo
DB
Death Star (=Database) with Tie Fighters (=Microservices)
“Here‘s a picture of the microservices and their underlying shared database.”
Risks
„I just need that piece of data from the other service, let‘s
go to the database and fetch it.“
Default values?
Known data issues
Bounded Context? On-the-fly data
migrations?
Code Duplication
templates
{“_id“:“def“} …
Mongo Usage
Mongo
Globals
Tenant A
Tenant C
Tenant B
…
people
{“_id“:“def“} …
plans
{“_id“:“def“} …
tasks
{“_id“:“def“} …
org_imports
{“_id“:“def“} …
…
Databases CollectionsCluster
Mitigations
• One Mongo collection belongs to exactly one microservice
• Microservices communicate via APIs
• Bounded Context – Clear Interface
• Decoupled runtime, decoupled deployments
Mongo Usage
Mongo
Globals
Tenant A
Tenant C
Tenant B
…
people
{“_id“:“def“} …
plans
{“_id“:“def“} …
assigned
{“_id“:“def“} …
org_imports
{“_id“:“def“} …
…
Databases CollectionsCluster
people service
plans service
tasks servicetemplates
{“_id“:“def“} …
Common Smells
API call cascades
Distributed Monolith
(Dante is calling)
Change requires concerted releases
Breach of API evolution
guidelines
Functionality requires
1:n API calls
Bounded Context
might be “wrong”
How does this… help?
Development Strategy
Short Feature
Branches
Feature Flags
Per Tenant
Features which are still being finalized
are often already deployed to Prod!
Local
Development
Deploy/Test in
Dev Cluster
Merge to
Master
Auto-Deploy to
Dev, Test, Prod
Finalizing
Feature
Code
Review
Feature
GA
F E A T U R E L I F E C Y C L E
Consequences
Services independently
deployable
CI/CD more or less
mandatory (with
all requirements)
Features can easily
be tested, also
with customers
Feedback loop
can be drastically
shortened
Features can be
implemented
iteratively
Close contact with
Business Development
pays off!
How To Not Break Things
Merge to Master…
Build Docker
Image
Test Image
isolated
Deploy to
<cluster>
Run end-to-
end tests
Dev, Test, then
Prod
Unit Tests
API Tests (!!)
Why API Tests?
Ensure
Backward
Compati-
bility
Ensure
Backward
Compati-
bility
Integ-
rations
Integ-
rations
Reflect
functio-
nality well
Reflect
functio-
nality well
Can Test
Docker
Images
Can Test
Docker
Images
Mobile App
Versions
Mobile App
Versions
Fairly Easy
To Design
Fairly Easy
To Design
Run Fast
Locally
Run Fast
Locally
Gotchas
Rollouts are
only safe if
tests are pretty
comprehensive
Rollouts are
only safe if
tests are pretty
comprehensive
Choosing tests
(Unit, API, E2E)
efficiently is…
tricky.
Choosing tests
(Unit, API, E2E)
efficiently is…
tricky.
Writing
testable code is
also… tricky.
Writing
testable code is
also… tricky.
Shortlived feature
branches crucial to
not build up large
and dangerous
changes
Shortlived feature
branches crucial to
not build up large
and dangerous
changes
And if you
break things…
… make sure you realize that
you did.
Monitoring
Extremely important!
>50% of End-users are two
“hops” away, maybe reluctant
to report issues
Haufe
Customer
Onboardee
Traffic from Mobile App only
visible via API instrumenting
Prometheus
+ AlertManager
Sample Ops Alert
Response code not 2xx and not 404
Microservice misbehaving
Leveraging Managed Services
I probably won‘t operate things
better* than a cloud provider.
I probably won‘t operate things
better* than a cloud provider.
Repeat after me:
Log Management
Databases
(MongoDB, Postgres)
E-Mail sending
Push Notifications
Kubernetes
as a Service
But some things just don‘t fit
(so you end up with DIY anyway)
Grafana
Prometheus
API Gateway
(wicked/Kong)
*) safer, cheaper;
exceptions apply
Wrap Up & Stuff
What makes myOnboarding special?
Short Customer
Feedback Loop
Developed RAD Style
With Pilot Customers
Extremely Good
Marketing
Established
Thought Leadership
“Onboarding”
(LinkedIn,…)
Onboarding Engages
Our Customers –
With Technology
Attractive Technologies
(We‘re Hiring!)
RAD Project Turned
Product!
Awesome Sales
Team (Felix!)
Questions

More Related Content

What's hot

Intro to js august 31
Intro to js august 31Intro to js august 31
Intro to js august 31Thinkful
 
DevOps and AWS - Code PaLOUsa 2017
DevOps and AWS  - Code PaLOUsa 2017DevOps and AWS  - Code PaLOUsa 2017
DevOps and AWS - Code PaLOUsa 2017James Strong
 
Magic of web components
Magic of web componentsMagic of web components
Magic of web componentsHYS Enterprise
 
Apache Continuum Build, Test, and Release
Apache Continuum Build, Test, and ReleaseApache Continuum Build, Test, and Release
Apache Continuum Build, Test, and Releaseelliando dias
 
Immutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesImmutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesC4Media
 
Infrastructure as Code on Azure: Show your Bicep!
Infrastructure as Code on Azure: Show your Bicep!Infrastructure as Code on Azure: Show your Bicep!
Infrastructure as Code on Azure: Show your Bicep!Marco Obinu
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as CodePrasant Kumar
 
Building Microservices with the 12 Factor App Pattern on AWS
Building Microservices with the 12 Factor App Pattern on AWSBuilding Microservices with the 12 Factor App Pattern on AWS
Building Microservices with the 12 Factor App Pattern on AWSAmazon Web Services
 
API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020Eran Stiller
 
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless SummitServerless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless SummitCodeOps Technologies LLP
 
How to build the Cloud Native applications the way you want – not the way the...
How to build the Cloud Native applications the way you want – not the way the...How to build the Cloud Native applications the way you want – not the way the...
How to build the Cloud Native applications the way you want – not the way the...Eficode
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSAWS Vietnam Community
 
JCConf.tw 2020 - Building cloud-native applications with Quarkus
JCConf.tw 2020 - Building cloud-native applications with QuarkusJCConf.tw 2020 - Building cloud-native applications with Quarkus
JCConf.tw 2020 - Building cloud-native applications with QuarkusRich Lee
 
End-to-end test automation with Endtest.dev
End-to-end test automation with Endtest.devEnd-to-end test automation with Endtest.dev
End-to-end test automation with Endtest.devKonstantin Tarkus
 
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)Seven Peaks Speaks
 
Implementing Infrastructure as Code ConfigMgtCamp 2017
Implementing Infrastructure as Code ConfigMgtCamp 2017Implementing Infrastructure as Code ConfigMgtCamp 2017
Implementing Infrastructure as Code ConfigMgtCamp 2017Kief Morris
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service FabricDavide Benvegnù
 
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...CodeValue
 

What's hot (20)

Serverless
ServerlessServerless
Serverless
 
Intro to js august 31
Intro to js august 31Intro to js august 31
Intro to js august 31
 
DevOps and AWS - Code PaLOUsa 2017
DevOps and AWS  - Code PaLOUsa 2017DevOps and AWS  - Code PaLOUsa 2017
DevOps and AWS - Code PaLOUsa 2017
 
Magic of web components
Magic of web componentsMagic of web components
Magic of web components
 
Apache Continuum Build, Test, and Release
Apache Continuum Build, Test, and ReleaseApache Continuum Build, Test, and Release
Apache Continuum Build, Test, and Release
 
IaC on AWS Cloud
IaC on AWS CloudIaC on AWS Cloud
IaC on AWS Cloud
 
Immutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesImmutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine Images
 
Infrastructure as Code on Azure: Show your Bicep!
Infrastructure as Code on Azure: Show your Bicep!Infrastructure as Code on Azure: Show your Bicep!
Infrastructure as Code on Azure: Show your Bicep!
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Building Microservices with the 12 Factor App Pattern on AWS
Building Microservices with the 12 Factor App Pattern on AWSBuilding Microservices with the 12 Factor App Pattern on AWS
Building Microservices with the 12 Factor App Pattern on AWS
 
API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020
 
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless SummitServerless Architecture Patterns - Manoj Ganapathi - Serverless Summit
Serverless Architecture Patterns - Manoj Ganapathi - Serverless Summit
 
How to build the Cloud Native applications the way you want – not the way the...
How to build the Cloud Native applications the way you want – not the way the...How to build the Cloud Native applications the way you want – not the way the...
How to build the Cloud Native applications the way you want – not the way the...
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
 
JCConf.tw 2020 - Building cloud-native applications with Quarkus
JCConf.tw 2020 - Building cloud-native applications with QuarkusJCConf.tw 2020 - Building cloud-native applications with Quarkus
JCConf.tw 2020 - Building cloud-native applications with Quarkus
 
End-to-end test automation with Endtest.dev
End-to-end test automation with Endtest.devEnd-to-end test automation with Endtest.dev
End-to-end test automation with Endtest.dev
 
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
Structuring node.js projects - Seven Peaks Software (Node.JS Meetup 18 nov 2021)
 
Implementing Infrastructure as Code ConfigMgtCamp 2017
Implementing Infrastructure as Code ConfigMgtCamp 2017Implementing Infrastructure as Code ConfigMgtCamp 2017
Implementing Infrastructure as Code ConfigMgtCamp 2017
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric
 
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
 

Similar to Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019

Mastinder singh visualcv_resume
Mastinder singh visualcv_resumeMastinder singh visualcv_resume
Mastinder singh visualcv_resumeMastinder Singh
 
Business model driven cloud adoption - what NI is doing in the cloud
Business model driven cloud adoption -  what  NI is doing in the cloudBusiness model driven cloud adoption -  what  NI is doing in the cloud
Business model driven cloud adoption - what NI is doing in the cloudErnest Mueller
 
Spring Boot & Spring Cloud on Pivotal Application Service
Spring Boot & Spring Cloud on Pivotal Application ServiceSpring Boot & Spring Cloud on Pivotal Application Service
Spring Boot & Spring Cloud on Pivotal Application ServiceVMware Tanzu
 
Visual studio 2017 - Launch Event Keynote
Visual studio 2017  - Launch Event KeynoteVisual studio 2017  - Launch Event Keynote
Visual studio 2017 - Launch Event KeynoteDelta-N
 
Let's banish "it works on my machine"
Let's banish "it works on my machine"Let's banish "it works on my machine"
Let's banish "it works on my machine"Stephanie Locke
 
We-Donut.io presentation of Platform
We-Donut.io presentation of PlatformWe-Donut.io presentation of Platform
We-Donut.io presentation of PlatformDennis Reurings
 
Webcast Automação Implantação de Aplicações (DevOps)
Webcast Automação Implantação de Aplicações (DevOps)Webcast Automação Implantação de Aplicações (DevOps)
Webcast Automação Implantação de Aplicações (DevOps)Felipe Freire
 
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...Amazon Web Services
 
Accelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and MicroservicesAccelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and MicroservicesAmazon Web Services
 
Mobile application development platform
Mobile application development platformMobile application development platform
Mobile application development platformi4consulting.org
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]Dynatrace
 
Putting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestPutting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestRobert MacLean
 
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonPCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonVMware Tanzu
 
Resume: DevOps/Technology Architect - Satya Prakash
Resume: DevOps/Technology Architect   -  Satya PrakashResume: DevOps/Technology Architect   -  Satya Prakash
Resume: DevOps/Technology Architect - Satya PrakashSatyaPrakash454
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKSPhil Reay
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKSPhil Reay
 
ABN AMRO DevSecOps Journey
ABN AMRO DevSecOps JourneyABN AMRO DevSecOps Journey
ABN AMRO DevSecOps JourneyDerek E. Weeks
 
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...VMware Tanzu
 
Uber's new mobile architecture
Uber's new mobile architectureUber's new mobile architecture
Uber's new mobile architectureDhaval Patel
 

Similar to Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019 (20)

Mastinder singh visualcv_resume
Mastinder singh visualcv_resumeMastinder singh visualcv_resume
Mastinder singh visualcv_resume
 
Business model driven cloud adoption - what NI is doing in the cloud
Business model driven cloud adoption -  what  NI is doing in the cloudBusiness model driven cloud adoption -  what  NI is doing in the cloud
Business model driven cloud adoption - what NI is doing in the cloud
 
Spring Boot & Spring Cloud on Pivotal Application Service
Spring Boot & Spring Cloud on Pivotal Application ServiceSpring Boot & Spring Cloud on Pivotal Application Service
Spring Boot & Spring Cloud on Pivotal Application Service
 
Visual studio 2017 - Launch Event Keynote
Visual studio 2017  - Launch Event KeynoteVisual studio 2017  - Launch Event Keynote
Visual studio 2017 - Launch Event Keynote
 
Let's banish "it works on my machine"
Let's banish "it works on my machine"Let's banish "it works on my machine"
Let's banish "it works on my machine"
 
We-Donut.io presentation of Platform
We-Donut.io presentation of PlatformWe-Donut.io presentation of Platform
We-Donut.io presentation of Platform
 
Webcast Automação Implantação de Aplicações (DevOps)
Webcast Automação Implantação de Aplicações (DevOps)Webcast Automação Implantação de Aplicações (DevOps)
Webcast Automação Implantação de Aplicações (DevOps)
 
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
GPSWKS404-GPS Game Changing C2S Services To Transform Your Customers Speed To...
 
Twelve factor-app
Twelve factor-appTwelve factor-app
Twelve factor-app
 
Accelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and MicroservicesAccelerate your Application Delivery with DevOps and Microservices
Accelerate your Application Delivery with DevOps and Microservices
 
Mobile application development platform
Mobile application development platformMobile application development platform
Mobile application development platform
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
 
Putting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestPutting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/Test
 
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - LondonPCF: Platform for a New Era - Kubernetes for the Enterprise - London
PCF: Platform for a New Era - Kubernetes for the Enterprise - London
 
Resume: DevOps/Technology Architect - Satya Prakash
Resume: DevOps/Technology Architect   -  Satya PrakashResume: DevOps/Technology Architect   -  Satya Prakash
Resume: DevOps/Technology Architect - Satya Prakash
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKS
 
Application Modernisation with PKS
Application Modernisation with PKSApplication Modernisation with PKS
Application Modernisation with PKS
 
ABN AMRO DevSecOps Journey
ABN AMRO DevSecOps JourneyABN AMRO DevSecOps Journey
ABN AMRO DevSecOps Journey
 
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
Faster, more Secure Application Modernization and Replatforming with PKS - Ku...
 
Uber's new mobile architecture
Uber's new mobile architectureUber's new mobile architecture
Uber's new mobile architecture
 

More from Haufe-Lexware GmbH & Co KG

X-celerate 2019: Iterating fast with the MERN Stack
X-celerate 2019: Iterating fast with the MERN StackX-celerate 2019: Iterating fast with the MERN Stack
X-celerate 2019: Iterating fast with the MERN StackHaufe-Lexware GmbH & Co KG
 
Cloud Journey: Lifting a Major Product to Kubernetes
Cloud Journey: Lifting a Major Product to KubernetesCloud Journey: Lifting a Major Product to Kubernetes
Cloud Journey: Lifting a Major Product to KubernetesHaufe-Lexware GmbH & Co KG
 
ONA ( organizational network analysis ) to enable individuals to impact their...
ONA ( organizational network analysis ) to enable individuals to impact their...ONA ( organizational network analysis ) to enable individuals to impact their...
ONA ( organizational network analysis ) to enable individuals to impact their...Haufe-Lexware GmbH & Co KG
 
ONA ( organizational network analysis ) enabling individuals to impact their ...
ONA ( organizational network analysis ) enabling individuals to impact their ...ONA ( organizational network analysis ) enabling individuals to impact their ...
ONA ( organizational network analysis ) enabling individuals to impact their ...Haufe-Lexware GmbH & Co KG
 
Using word vectors to enable better search in our legal products
Using word vectors to enable better search in our legal productsUsing word vectors to enable better search in our legal products
Using word vectors to enable better search in our legal productsHaufe-Lexware GmbH & Co KG
 
Identifying customer potentials through unsupervised learning
Identifying customer potentials through unsupervised learningIdentifying customer potentials through unsupervised learning
Identifying customer potentials through unsupervised learningHaufe-Lexware GmbH & Co KG
 
Managing short lived Kubernetes (Production) deployments
Managing short lived Kubernetes (Production) deploymentsManaging short lived Kubernetes (Production) deployments
Managing short lived Kubernetes (Production) deploymentsHaufe-Lexware GmbH & Co KG
 
DevOps Journey of Foundational Services at Haufe
DevOps Journey of Foundational Services at HaufeDevOps Journey of Foundational Services at Haufe
DevOps Journey of Foundational Services at HaufeHaufe-Lexware GmbH & Co KG
 
Microservice Transformation of the Haufe Publishing System
Microservice Transformation of the Haufe Publishing SystemMicroservice Transformation of the Haufe Publishing System
Microservice Transformation of the Haufe Publishing SystemHaufe-Lexware GmbH & Co KG
 

More from Haufe-Lexware GmbH & Co KG (20)

Tech stackhaufegroup
Tech stackhaufegroupTech stackhaufegroup
Tech stackhaufegroup
 
X-celerate 2019: Iterating fast with the MERN Stack
X-celerate 2019: Iterating fast with the MERN StackX-celerate 2019: Iterating fast with the MERN Stack
X-celerate 2019: Iterating fast with the MERN Stack
 
Cloud Journey: Lifting a Major Product to Kubernetes
Cloud Journey: Lifting a Major Product to KubernetesCloud Journey: Lifting a Major Product to Kubernetes
Cloud Journey: Lifting a Major Product to Kubernetes
 
ONA ( organizational network analysis ) to enable individuals to impact their...
ONA ( organizational network analysis ) to enable individuals to impact their...ONA ( organizational network analysis ) to enable individuals to impact their...
ONA ( organizational network analysis ) to enable individuals to impact their...
 
ONA ( organizational network analysis ) enabling individuals to impact their ...
ONA ( organizational network analysis ) enabling individuals to impact their ...ONA ( organizational network analysis ) enabling individuals to impact their ...
ONA ( organizational network analysis ) enabling individuals to impact their ...
 
Using word vectors to enable better search in our legal products
Using word vectors to enable better search in our legal productsUsing word vectors to enable better search in our legal products
Using word vectors to enable better search in our legal products
 
Identifying customer potentials through unsupervised learning
Identifying customer potentials through unsupervised learningIdentifying customer potentials through unsupervised learning
Identifying customer potentials through unsupervised learning
 
Field report: Rapid application development
Field report: Rapid application developmentField report: Rapid application development
Field report: Rapid application development
 
Behavior-Driven Development with JGiven
Behavior-Driven Development with JGivenBehavior-Driven Development with JGiven
Behavior-Driven Development with JGiven
 
Externalized Spring Boot App Configuration
Externalized  Spring Boot App ConfigurationExternalized  Spring Boot App Configuration
Externalized Spring Boot App Configuration
 
Managing short lived Kubernetes (Production) deployments
Managing short lived Kubernetes (Production) deploymentsManaging short lived Kubernetes (Production) deployments
Managing short lived Kubernetes (Production) deployments
 
DevOps Journey of Foundational Services at Haufe
DevOps Journey of Foundational Services at HaufeDevOps Journey of Foundational Services at Haufe
DevOps Journey of Foundational Services at Haufe
 
New Serverless World - Cloud Native Apps
New Serverless World - Cloud Native AppsNew Serverless World - Cloud Native Apps
New Serverless World - Cloud Native Apps
 
Microservice Transformation of the Haufe Publishing System
Microservice Transformation of the Haufe Publishing SystemMicroservice Transformation of the Haufe Publishing System
Microservice Transformation of the Haufe Publishing System
 
Haufe API Strategy
Haufe API StrategyHaufe API Strategy
Haufe API Strategy
 
Haufe's Tech Strategy In Practice
Haufe's Tech Strategy In PracticeHaufe's Tech Strategy In Practice
Haufe's Tech Strategy In Practice
 
Kubernetes Intro @HaufeDev
Kubernetes Intro @HaufeDev Kubernetes Intro @HaufeDev
Kubernetes Intro @HaufeDev
 
API Management with wicked.haufe.io
API Management with wicked.haufe.ioAPI Management with wicked.haufe.io
API Management with wicked.haufe.io
 
Reactive microservices
Reactive microservicesReactive microservices
Reactive microservices
 
An Introduction to event sourcing and CQRS
An Introduction to event sourcing and CQRSAn Introduction to event sourcing and CQRS
An Introduction to event sourcing and CQRS
 

Recently uploaded

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Recently uploaded (20)

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

Haufe Onboarding - Fast Iterating With the MERN Stack - TEC Day 2019

  • 1. myOnboarding Iterating fast with the MERN stack Haufe TEC Day, September 26th 2019 Martin Danielsson martin.danielsson@haufe-lexware.com Twitter & GitHub: donmartin76
  • 2. whoami C:> WINDOWS.EXE C/C++/C# Background 10+ years C:> WINDOWS.EXE C/C++/C# Background 10+ years $ docker ps Containers & Kubernetes Since ~4 years $ docker ps Containers & Kubernetes Since ~4 years wicked.haufe.io maintainer OSS API Management Solution Architect (CTO Office) Developer since 2006
  • 3.
  • 4. Our Solution Two Components: • SaaS Web CMS for HR and all Supervisors • Mobile App for iOS and Android, and a responsive Web Site for Onboardees (iOS 9 & Android 6) Haufe myOnboarding App Content- und Taskmanagement over Control Center Responsive Website for Onboardees
  • 5. Why myOnboarding? 1 Signed Contract 2 First Wor- king Day 3 End of probation Employee motivation / Productivity increase Time Without onboarding Quitting Threshold EmployeeMotivation/Productivitiy Without onboarding Risk of leaving company 2-3 months 6 months
  • 6. Dimensions of Onboarding Dimension TIME PreBoarding 1st working day Integration Content Processes Integration Engagement Feedback
  • 7. Team Setup Development+UI/UX Barcelona and Freiburg Product Management Product and Marketing Intrapreneurs Freiburg Marketing Management Freiburg Business Development Management Freiburg Sales Support Implementation Consulting (clevis) Core Team: Daily/Bi-Weekly Exchange (Mostly) Shared OKRs Fully Responsible Product Team
  • 8. MERN – The Tech Stack
  • 11. JS(ON) all the way down… (1) Payloads are always JSON, no need to think JSON handled natively by node.js and browsers MongoDB stores (and indexes) JSON natively. How convenient. Programming language is always JavaScript
  • 12. JS(ON) all the way down… (2) Increased Productivity Moving between frontend and backend is less challenging Tooling similar for Frontend and Backend Entire Stack runs easily on a developer laptop Same Tech for sharing libraries (npm) everywhere Lightweight programming, Fast first implementations
  • 13. Drawbacks Technology Major Drawback JavaScript No Type Safety ( TypeScript) MongoDB Schemaless (weeeell…) React Extremely fast moving Express.js --
  • 15. Client Types CMS and Web App React Single Page Applications Served via nginx static web server Mobile App Mobile App iOS/Android via react-native Cross compiled to iOS and Android Similar programming as CMS/Web App Communicate with Backend via REST API Secured via OAuth2 SSO Support Integration Clients myOnboarding Command Line Interface Umantis Bewerber- Management Custom Integrations via API Management
  • 16. Architecture Kubernetes (Azure AKS-Engine)Kubernetes (Azure AKS-Engine) CMSCMSAPIGateway (wicked/kong) APIGateway (wicked/kong) Auth Server Auth Server PeoplePeople ContentContent GrafanaGrafana Notific- ations Notific- ations Sche- duler Sche- duler Permis- sions Permis- sions Integ- ration Plans Integ- ration Plans Prome- theus Prome- theus Alert manager Alert manager Web AppWeb App Mongo DB (Atlas, managed service) Mongo DB (Atlas, managed service) IngressController(SSL)IngressController(SSL) TasksTasks MediaMedia System Compo- nent System Compo- nent Nginx Static Nginx Static Micro- Service Micro- Service BrowserBrowser Mobile AppMobile App OAuth2.0 Integrations (mO CLI, Umantis,…) Integrations (mO CLI, Umantis,…) No state inside k8s cluster! No state inside k8s cluster!
  • 17. ServiceService ServiceService Key Design Principles API ClientClient API GatewayAPI Gateway ServiceService IntegrationIntegration Mobile Client Mobile Client Bounded Context Functionality Functionality Functionality Mongo DB Mongo DB
  • 18. Death Star (=Database) with Tie Fighters (=Microservices) “Here‘s a picture of the microservices and their underlying shared database.”
  • 19. Risks „I just need that piece of data from the other service, let‘s go to the database and fetch it.“ Default values? Known data issues Bounded Context? On-the-fly data migrations? Code Duplication
  • 20. templates {“_id“:“def“} … Mongo Usage Mongo Globals Tenant A Tenant C Tenant B … people {“_id“:“def“} … plans {“_id“:“def“} … tasks {“_id“:“def“} … org_imports {“_id“:“def“} … … Databases CollectionsCluster
  • 21. Mitigations • One Mongo collection belongs to exactly one microservice • Microservices communicate via APIs • Bounded Context – Clear Interface • Decoupled runtime, decoupled deployments
  • 22. Mongo Usage Mongo Globals Tenant A Tenant C Tenant B … people {“_id“:“def“} … plans {“_id“:“def“} … assigned {“_id“:“def“} … org_imports {“_id“:“def“} … … Databases CollectionsCluster people service plans service tasks servicetemplates {“_id“:“def“} …
  • 23. Common Smells API call cascades Distributed Monolith (Dante is calling) Change requires concerted releases Breach of API evolution guidelines Functionality requires 1:n API calls Bounded Context might be “wrong”
  • 25. Development Strategy Short Feature Branches Feature Flags Per Tenant Features which are still being finalized are often already deployed to Prod! Local Development Deploy/Test in Dev Cluster Merge to Master Auto-Deploy to Dev, Test, Prod Finalizing Feature Code Review Feature GA F E A T U R E L I F E C Y C L E
  • 26. Consequences Services independently deployable CI/CD more or less mandatory (with all requirements) Features can easily be tested, also with customers Feedback loop can be drastically shortened Features can be implemented iteratively Close contact with Business Development pays off!
  • 27. How To Not Break Things
  • 28. Merge to Master… Build Docker Image Test Image isolated Deploy to <cluster> Run end-to- end tests Dev, Test, then Prod Unit Tests API Tests (!!)
  • 29. Why API Tests? Ensure Backward Compati- bility Ensure Backward Compati- bility Integ- rations Integ- rations Reflect functio- nality well Reflect functio- nality well Can Test Docker Images Can Test Docker Images Mobile App Versions Mobile App Versions Fairly Easy To Design Fairly Easy To Design Run Fast Locally Run Fast Locally
  • 30. Gotchas Rollouts are only safe if tests are pretty comprehensive Rollouts are only safe if tests are pretty comprehensive Choosing tests (Unit, API, E2E) efficiently is… tricky. Choosing tests (Unit, API, E2E) efficiently is… tricky. Writing testable code is also… tricky. Writing testable code is also… tricky. Shortlived feature branches crucial to not build up large and dangerous changes Shortlived feature branches crucial to not build up large and dangerous changes
  • 31. And if you break things… … make sure you realize that you did.
  • 32. Monitoring Extremely important! >50% of End-users are two “hops” away, maybe reluctant to report issues Haufe Customer Onboardee Traffic from Mobile App only visible via API instrumenting Prometheus + AlertManager
  • 33. Sample Ops Alert Response code not 2xx and not 404 Microservice misbehaving
  • 34. Leveraging Managed Services I probably won‘t operate things better* than a cloud provider. I probably won‘t operate things better* than a cloud provider. Repeat after me: Log Management Databases (MongoDB, Postgres) E-Mail sending Push Notifications Kubernetes as a Service But some things just don‘t fit (so you end up with DIY anyway) Grafana Prometheus API Gateway (wicked/Kong) *) safer, cheaper; exceptions apply
  • 35. Wrap Up & Stuff
  • 36. What makes myOnboarding special? Short Customer Feedback Loop Developed RAD Style With Pilot Customers Extremely Good Marketing Established Thought Leadership “Onboarding” (LinkedIn,…) Onboarding Engages Our Customers – With Technology Attractive Technologies (We‘re Hiring!) RAD Project Turned Product! Awesome Sales Team (Felix!)