Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Twelve-Factor App. How to build Cloud Nativ...

The Twelve-Factor App. How to build Cloud Native apps

in Lithuanian

EN: How to migrate existing or build new application to be cloud native
LT: Ką reikia žinoti nori migruoti naują arba jau esamą sistemą į debesis

Linas Gricius

March 15, 2017
Tweet

More Decks by Linas Gricius

Other Decks in Technology

Transcript

  1. 12 faktorių. Kas tai? 12 faktorių tave sudomins, jei: •

    Nori migruoti naują arba jau esamą sistemą į debesis • Nori suprasti, kaip kuriamos tokios sistemos
  2. Pradžių pradžia • Pirmieji viešai prieinami debesys, pirmieji vartotojai •

    Heroku leido padarius git push džiaugtis debesų privalumais • Privalumais? Jokių rūpesčių su infrastruktūra! Tik aplikacija turi būti “cloud friendly” • Kaip? Kodėl? Klausimų daug, patyrusių specialistų mažai…
  3. 12 faktorių. Kelio pradžia • 2012 metais Heroku paskelbė 12

    faktorių • Tai taisyklės ir rekomendacijos, kad aplikacija būtų Cloud Native
  4. 12 faktorių (1) • Codebase. One codebase tracked in revision

    control, many deploys • Dependencies. Explicitly declare and isolate dependencies • Configuration. Store configuration in the environment • Backing Services. Treat backing services as attached resources • Build, release, run. Strictly separate build and run stages • Processes. Execute the app as one or more stateless processes
  5. 12 faktorių (2) • Port binding. Export services via port

    binding • Concurrency. Scale out via the process model • Disposability. Maximize robustness with fast startup and graceful shutdown • Dev/prod parity. Keep development, staging, and production as similar as possible • Logs. Treat logs as event streams • Admin processes. Run admin/management tasks as one-off processes
  6. Progresas • Kasmet debesų industrija sparčiai tobulėja • 2012 metais

    paskelbti 12 faktorių buvo papildyti ir jau turim bent 15! • Daugiau apie tai nemokamoje knygoje Beyond the 12 Factor App: Exploring the DNA of Highly Scalable, Resilient Cloud Applications
  7. #1. Viena kodo bazė, viena aplikacija One codebase, one application

    • Viena kodo bazė, daug diegimų ◦ Gali būti viena ◦ Arba daug repozitorijų • Svarbiausia - viena kodo bazė visoms aplinkoms
  8. #2. Pirmiausia - API API first • API pagalba galit

    turėt ◦ Svetainę ◦ Mobiliąją programėlę ◦ Aplikaciją ◦ Integracijas partneriams • Padeda išvengti kodo dubliavimo
  9. #3. Priklausomybių valdymas Dependency management • PHP standartas - Composer!

    • Frontend - NPM / Bower ir kt. • Serverių paruošimui: Ansible, Puphpet ir kt. Automatizuokit! Nekopijuokit!
  10. #4. Suprojektuok, paruošk, atlik diegimą, naudokis Design, build, release, and

    run https://www.oreilly.com/ideas/design-build-release-run • Kodas paruošiamas dar prieš sukeliant į debesis • Produkcinėje aplinkoje kodas tik vykdomas!
  11. #5. Nustatymai ir kodas Configuration, credentials, and code • “Treat

    Your Apps Like Open Source” • "Store config in the environment" (getenv()) • Jei vis tik reikia naudoti failą: ◦ 1 failas - 1 aplinka ◦ Negalima dėti į VCS ◦ Diegimo metu įdėkit į kodą
  12. #6. Sistemos įrašai Logs • “Logs should be treated as

    event streams” • php://stderr, php://stdout ! • Naudokit Monolog! • Debesys turi įrankius, kad jūsų įrašus agreguoti į vieną vietą (pvz CloudWatch)
  13. #7. Laikina Disposability • Gera mašina, kuri greit atsikėlė, greit

    ir numirė • Ilgas mašinos paruošimo laikas gali reikšti nuostolius • Mašinos gali mirti netikėtai • Mašina pradėjo užduotį ir numirė. Ar dingo duomenys/užduotis? • Klausykis SIGTERM • Dar nenaudoji eilių???
  14. #8. Paslaugos Backing services • Servisai: db, smtp, oauth, failų

    saugojimas ir kt. • Pakeitimas turi būti toks lengvas, kaip nustatymų keitimas • Failų operacijoms privaloma naudoti virtualią failų sistemą. Ar NFS, ar S3 - pakeitus nustatymus turi veikti!
  15. #9. Vienodos Aplinkos Environment parity • “It works on my

    machine” anti-pattern • Turi būti vienodos aplinkos DEV/QA/PROD
  16. #10. Užduočių procesai Administrative processes • Leisti procesus identiškoje aplinkoje

    kaip leidžiama aplikacija • Tai galėtų būti aplikacijos kodo dalis
  17. #11. Prievadai Port binding • Aplikacija susiejama su Port’u •

    Routing layer (pvz Nginx) srautą nukreipia į aplikaciją
  18. #14. Duomenų rinkimas Telemetry • Application performance monitoring. New Relic?

    Ruxit? Etc.. • Application Business Events • Health and system logs (startup time, health checks, etc). Cloud tools?
  19. #15. Autentifikacija ir autorizacija Authentication and authorization • RBAC (role-based

    access control) turėtų būti naudojamas visiems kontroleriams, kad būtų aišku kas ką darė • security should be some‐ thing that is baked into the application’s development from day one, and not added as a bolt-on project after an application is running in production
  20. AWS Free Tier • Amazon AWS siūlo nemokamai metams savo

    paslaugas pabandymui • Pirmiems bandymams tikrai užteks nemokai siūlomų servisų • Jei renkatės mokamą paslaugą - parodo prieš užsakant daugiau informacijos https://aws.amazon.com/free/
  21. Kursai apie AWS • Udemy.com siūlo kursus: ◦ AWS Certified

    Developer - Associate 2017 ◦ AWS Certified Solutions Architect - Associate 2017 ◦ AWS Certified SysOps Administrator - Associate 2017 ◦ Ir kt. • Dažnai būna nuolaidos ir kaina būna 10-15 Eur