How to build an app in the cloud?
Edition 2024
How to join?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
Use the phone, Luke!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
Piotr Stapp
- Unique name - just sing a song: "Don't Stapp me know" ;)
- SAFe System Principal Architect @ Demant Technology Center
- ex - Senior software/DevOps/Architect @mBank/@FinAi/@Allegro
- Own company (small consulting + workshops)
- M.Sc (distction) Oxford Brooks University in Web Tech
- M.Sc. Warsaw University of Technology in Computer Science
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
![](https://media3.giphy.com/media/26xBMwu2cs1ClnGWQ/giphy.gif)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/6763714/pasted-from-clipboard.png)
Attention
All opinions are my own
and
do not necessarily reflect
the views of any companies.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
Context
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
Agile -> Scrum -> SAFe
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/9871836/pasted-from-clipboard.png)
App? Seriosly?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11394426/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11394427/pasted-from-clipboard.png)
Internal Developer Platform
Benefits:
- Platforms are designed to achieve scale and reduce time-to-value.
- They eliminate toil by offering DevEx and simplified operations.
- Key components include self-sufficiency tools, common task assistance, reusable building blocks, and early feedback on problems or security risks.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11389578/pasted-from-clipboard.png)
Basic
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
Pick your favorite cloud
Version control
CI/CD
Did you include?
Our contract
- In this presentation money are not important
- In real life they are
![](https://media2.giphy.com/media/lptjRBxFKCJmFoibP3/giphy.gif)
Resources
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
The incomplete list
Containers
- Azure Container Instances
- Azure Kubernetes Service (AKS)
- Azure Container Apps
- Azure Web App with containers or not
- Virtual machines + custom scripts (e.g. docker-compose up)
- Virtual machines + "cluster management" (e.g. Rancher, Kubermatic, ... )
No containers
- Not today - sorry :)
Upfront + static costs
Containers
- Azure Container Instances
- Azure Kubernetes Service (AKS)
- Azure Container Apps
- Azure Web Apps with containers or not
- Virtual machines + custom scripts (e.g. docker-compose up)
- Virtual machines + "cluster management" (e.g. Rancher, Kubermatic, ... )
Easy to scale up
Containers
- Azure Container Instances
- Azure Kubernetes Service (AKS) ***
- Azure Container Apps
- Azure Web Apps
- Virtual machines + custom scripts
- Virtual machines + "cluster management"
Easy to scale down
Containers
- Azure Container Instances
- Azure Kubernetes Service (AKS) ***
- Azure Container Apps
- Azure Web Apps
- Virtual machines + custom scripts
- Virtual machines + "cluster management" ***
DevEx
Containers
- Azure Container Instances
- Azure Kubernetes Service (AKS) ***
- Azure Container Apps
- Azure Web Apps
- Virtual machines + custom scripts
- Virtual machines + "cluster management" ***
Voting on hosting
Data
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/9023752/pasted-from-clipboard.png)
Small recap
- We build a platform - different systems may have different needs
- Still we need to give "something" with:
- integrated networking
- HAA
- support
- etc.
NoSQL
- Great, isn't it?
- New, isn't it?
SQL
- Solid, isn't it?
- Well known, isn't it?
Options
- Self-hosted "custom" one on VM's
- Azure Storage
- Cosmos DB
- "Native"
- Mongo
- GraphQL
- Postgres on Cosmos
- ....
- SQL as a Service
- MSSQL
- Postgres
- MySQL
- MariaDB
Custom stuff on VM's
Before you decide, you should know
- why PaaS DB won't work for you
- how to manage this custom stuff
Azure Storage
- Very cheap
- Simple key-value or "file database"
- Limit for maximum number of operations
- Used by https://haveibeenpwned.com/
In other words, if I want 100GB of storage and I want to hit it 10 million times, it’ll cost me $8 a month.
Azure SQL for ...
Cosmos DB
- "SQL", API for MongoDB, Gremlin, Cassandra, Table, ...
- Key-vaule, Column-Family, Documents, Graph
- Pricing:
- Standard
- Auto-scale
- Serverless
- Dynamic scaling? Yes!!
- Postgres on board? Yes!!!
What about ...
- DB2🙈 (check: IBM DB2 Azure Virtual Machines DBMS)
- Oracle 🙉 (check: Oracle Database Service for Microsoft Azure)
- Redis🙊 (check: Azure Cache for Redis)
- ....
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11669432/pasted-from-clipboard.png)
GeeCON 2023: Wojtek Ptak
Hypergrowth scaling made simple
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/9871751/pasted-from-clipboard.png)
Options
- Self-hosted "custom" one on VM's
- Azure Storage
- Cosmos DB
- SQL as a Service
- Postgres
Voting
Services
or queues?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11389578/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390131/pasted-from-clipboard.png)
Let's zoom it
ActiveMQ vs Service Bus
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390301/pasted-from-clipboard.png)
RabbitMQ vs AMPQ
- AMQP 1.0 (used by Service Bus) is a completely different protocol than AMQP 0-9-1 (used by RabbitMQ)
- Rabbit implements AMQP 1.0 via a plugin
Kafka vs Event Hub
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390334/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390345/pasted-from-clipboard.png)
To queue or not to queue?
Monitoring & logging
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11389578/pasted-from-clipboard.png)
Let's zoom it
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390468/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390441/pasted-from-clipboard.png)
What about Azure?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390447/pasted-from-clipboard.png)
And more
The (in)complete list
- Application Insights
- Azure Monitor ++
- Grafana / Azure Managed Grafana
- Prometheus / Azure Monitor Managed Service for Prometheus
- Self-hosted ELK
- ....
I want to use
User Data Storage
accounts and passwords
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
Old days
![](https://media4.giphy.com/media/lGwDEgmucvg4x7iv2x/giphy.gif)
Receipe
- Take one technology that you <3
- Apply the first tutorial about user accounts
- Or copy some stuff from previous project
My case
- .NET Framework (a good one)
- Avoided problems:
- Passwords with base64
- SQL injection
- In PHP, NodeJS, Java, .... - situation is simmilar
Seriously!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/9023507/Zrzut_ekranu_2021-10-16_o_17.01.01.png)
Today
![](https://media3.giphy.com/media/XCdsB59vTowwM/giphy.gif)
The incomplete list
- Dedicated tools for user management:
- Active Directory
- OpenLDAP
- ...
- Ready to deploy and use:
- Keycloak,
- Identity Server 4
- ...
- SaaS:
- Auth0
- Userbase
- Azure B2C
Candidates
"Self-hosted"
- My own with NuGet / Maven / NPM / pip / ... support
- Active Directory / OpenLDAP / ...
- Keycloak / Identity Server 4 / ...
SaaS
- SaaS outside Azure: Auth0
- "SaaS" inside Azure: Azure B2C
- Totally "unknow" SaaS: Userbase
SaaS Features
- Facebook / Twitter / Github / .... login
- MFA with application and SMS
- FIDO2
- Custom domain
- Custom CSS
- ....
Money
"Have I Been Pwned"?
The end?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11390664/pasted-from-clipboard.png)
Our amazing IDP!
State
- We know how to store code
- We know how to host our app
- We know how to deploy it
- We know how to monitor it
- We know how to store data
- We know how to manage users
- We know ....
Are we ready to deploy?
Generate image representing our deployment using AI
![](https://media4.giphy.com/media/iF0J8RlEJamCQ/giphy.gif)
Your deploy will be like dance.
![](https://media4.giphy.com/media/3oEjI6SIIHBdRxXI40/giphy.gif)
Generating perfect image....
Help! Aider! Hilfe! Pomocy!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/189636/images/11391036/qrchimpX512.png)
How to become an architect in the cloud?
By Piotr Stapp
How to become an architect in the cloud?
- 114