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

Avatar for Linas Gricius

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