25
Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa Michał Baliński Architekt oprogramowania Jakub Filipczak Integrator systemów

Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

Embed Size (px)

Citation preview

Page 1: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

Aplikacje w chmurze (prywatnej)z perspektywy Deva i Opsa

Michał BalińskiArchitekt oprogramowania

Jakub FilipczakIntegrator systemów

Page 2: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023

Czym się zajmujemy?

Oberthur Software Platforms

DIGITALIDENTITY

TRANSPORT& ACCESS CONTROL

MACHINE-TO-MACHINE

MOBILE FINANCIALSERVICES

SMARTTRANSACTIONS

Oberthur Software Platforms

CustomerSystems

Oberthur Cloud Customer Premises

OT Secure Elements

OT R&D PolandOprogramowanie:- serwerowe- wbudowane

(UICC)

Podejście produktowe

BezpieczeństwoSkalowalnośćDostępność

Page 3: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023

Jak pracujemy?

3

FrancjaPolskaUSAFilipinyIndonezjaChinyKorea

~700Inżynierów R&D

100+Osób w R&D Łódź

500+Repozytoriów GIT

500+ VMwspierających rozwój oprogramowania

2K+ kontenerów Docker

1000+ zadań continouus integration50+ Wspólnych bibliotek i komponentóww modelu „internal open source”

>10Multi-dyscyplinarnychzespołów w R&D Łódź

Arch Dev QA Ops

Trochę statystyk

Page 4: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023

Architektura rozwiązań – „chmura mikroserwisów”

Pod „instancja mikroserwisu”

Replication controller„mikroserwis”

Service„endpoint”

Node„host”

Page 5: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 5

Kontenery - Docker

App

Libs

OS

HW

Klasyczne Środowisko

App#1

Libs

H-OS

HW

Środowisko Wirtualizowane

G-OS G-OS

Libs

App#2 App#1

Libs

OS

HW

Środowisko Wirtualizowane

Docker Engine

Libs

App#2

• Mechanizm lekkiej wirtualizacji• Docker wykorzystuje wbudowane mechanizmy jądra Linux

(cgroups, namespaces) • Tworzy pseudo izolowane środowiska uruchomieniowe

Page 6: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 6

Linux

Docker

Kubelet

Host

Linux

Docker

Kubelet

Host

Linux

Docker

Kubelet

Host

Linux

Docker

Kubelet

Host

Chmura kontenerów

Linux

Docker

Kubelet

Host

OT PSFPlatformsOT PSF

PlatformsContainer

Pod

OT PSFPlatformsOT PSF

PlatformsContainer

Pod

OT PSFPlatformsOT PSF

PlatformsContainer

PodRepl

icat

ion

Cont

rolle

r

Service

Container

Pod

Service

Container

Pod

Kubernetes

Page 7: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 7

Aplikacje gotowe na chmurę(ang. cloud native applications)

• Wykorzystują zalety chmury• Elastycznie dostosowują się do

dynamicznej infrastruktury• Bezstanowe usługi• Skalowalne• Zautomatyzowana, deklaratywna

konfiguracja• Wysoko dostępne i odporne na awarie

I. CodebaseII. DependenciesIII. ConfigIV. Backing ServicesV. Build, Release, RunVI. ProcessesVII. Port BindingVIII.ConcurrencyIX. DisposabilityX. Dev/Prod ParityXI. LogsXII. Admin Process

Cechy Praktyki 12-factor

Page 8: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 8

I - Codebase

Repozytoria z kodem

źródłowym aplikacji

Repozytoria definiujące

obrazy bazowe

(Dockerfiles)

Repozytoria z konfiguracją środowisk i

deploymentów

Rejestry obrazów

i artefaktów

Git

GitGit

Dev

Test

Staging

Produkcja

Codebase

DependenciesInfrastructure as a Code

Page 9: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023

II - Dependencies

9

Repozytoria z kodem

źródłowym aplikacji

Repozytoria definiujące

obrazy bazowe

(Dockerfiles) Repozytoria z konfiguracją środowisk i

deploymentów

Rejestry obrazów

Git

DockerRegistry

Dev

Test

Staging

Produkcja

Env Dependencies

Rejestry artefaktów

Artifactory

Lib Dependencies

Immutable imageswith

bundled deps

9

Page 10: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 10

III - Config

Repozytoria z konfiguracją środowisk

Git

Konfiguracja Produktu:- wersjonowana- prostsze projekty - zmienne środowiskowe- złożone projekty - pakiet per środowisko

STAGE Serwer QA SerwerDEV Serwer

Page 11: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 11

IV – Backing services

ContainerContainer

Cassandra

ContainerContainer

MariaDB

ContainerContainer

Redis

ContainerContainer

etcd

ContainerContainer

ActiveMQ

App App App

Usługi wspomagające:

- stanowe- wysoko dostępne- klastrowane- persystentne- skalowalne

Page 12: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 12

V – Build, Release, Run

Repozytoria z kodem

źródłowym aplikacji

Jenkins

Artifactory

Docker Registry

Artifactory

Repozytoria konfigurcji

Repozytoriumobrazów

Page 13: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 13

V – Build, Release, Run

Repozytoria konfiguracji

Rejestry obrazów

i artefaktów

JenkinsGreen Junits

Stabilna wersja

Salt Stack/Puppet

QA Serwer #3QA Serwer #2QA Serwer #1

Page 14: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 14

V – Build, Release, Run

Jenkins/Testy

Integracyjne

QA Serwer #1

Repozytoria konfigurcji

Wersja Promowana

Page 15: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 15

VI - Processes

Container

Pod

appprocess

containerContainer

Pod

appprocess

container

Container

Pod

appprocess

containerContainer

Pod

appprocess

container

statefull, highly available backing services

Procesy aplikacyjne:

- bezstanowe- skalowalne- luźno powiązane- ulotne- niezależne- każdy w kontenerze

Page 16: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 16

VII – Port Binding

Kontener

Aplikacja

Biblioteka Serwerowa

Część Aplikacyjna

TCP

TCP

Page 17: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 17

VIII - Concurency

ContainerContainer

AppsContainer

ContainerApp 1

ContainerApps

ContainerContainer

App 2

ContainerContainer

AppsContainer

ContainerApp 3

ContainerContainer

AppsContainer

ContainerApp 1

ContainerApp 2

ContainerContainer

AppsContainer

ContainerApp 3

ContainerContainer

AppsContainer

ContainerApp 1

AppsContainer

ContainerApp 3

Współbieżność

skalowanie horyzontalne

• ilość instacji• osobne procesy

skalowanie wertykalne• małe instancje• optymalne

wykorzystanie zasobów

asynchroniczność• non-blocking I/O

ContainerContainer

AppsContainer

ContainerApp 1

Page 18: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 18

IX - Disposability

App App App

• Instancje ulotne (ang. disposable)• Instancje niezmienne (ang. immutable)• Szybko startujące• Wprowadzanie zmian poprzez zastąpienie instancji nową• Polityka „crash only” (brak tzw. „gracefull shutdown”)• Asynchroniczność poprzez kolejkowanie komunikatów

Page 19: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 19

X – Dev/Prod parity

HW

OS

Libs

App

HW

OS

Libs

HW

OS

Libs

HW

OS

Libs

AppApp App

DEV QA Stage PROD

?? ?

HW

OS

DEV

HW

OS

QA

HW

OS

Stage

HW

OS

PROD

Libs

App

Libs

App

Libs

App

Libs

AppKontener Kontener Kontener Kontener

Page 20: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 20

XI - Logs

OT PSFPlatformsOT PSF

PlatformsContainer

Pod

OT PSFPlatformsOT PSF

PlatformsContainer

Pod

OT PSFPlatformsOT PSF

PlatformsContainer

Pod

Host

DockerFluentdDriver

stdout

Fluentd ElasticSearch

Kibana

JSON

KubernetesMaster

$kubectl logs POD

Page 21: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 21

XII - Admin ProcessProcesy administracyjne:

- uruchamiane w tym samym środowisku co aplikacja- korzystające z REPL udostępnianych przez język- lub mechanizmów udostępnianych przez backend

Cassandra Cassandr

a

Docker Docker

CQLSH

App

BSH

App

Docker

TCP

TCP

Page 22: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 22

Nasza droga

Stare podejście

Kontenery

Orkiestracja I

Orkiestracja II

Chmura (HA)

Custom

Customdocker compose

Page 23: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 23

Wnioski (lessons learned)• Duża ilość repozytoriów / mikroserwisów jest wyzwaniem

(chociażby świadomość jakie komponenty posiadamy)

• Postawienie, ustabilizowanie i utrzymanie chmury prywatnej – to nietrywialny, kosztowny i długotrwały wysiłek

• Najnowsze technologie – potrafią przysporzyć trudności ;-)

• Aplikacje powinny być tworzone pod chmurę

• Dostęp do logów przez Kibanę – trzeba się nauczyć z tym żyć

• Wdrożenia u klienta (on-premises)o nie zawsze się da tak jak byśmy chcieli (docker, k8s)o klienci mają specyficzne ograniczenia i standardy ITo brak kompetencji docker / kubernetes u klientówo bezpieczeństwo kontenerów

• Wymuszanie najnowszych wersji poprzez usuwanie starych obrazów bazowych Docker

Page 24: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

May 1, 2023 24

Rekrutujemy

Arch Dev QA Ops

Page 25: Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa

Dziękujemy za uwagę.

Michał Baliń[email protected]: @MichalBalinski

Jakub [email protected]