Život / vrstvy

aplikace v čase

Ondřej Kryl

MySQL

PHP

HTML / CSS / JS

FTP / HOSTING

Včera

Menší aplikace, méně požadavků na změny, menší traffic

MySQL / PostgreSQL / NoSQL

Redis / Memcache / MessageQueues / Fulltext

PHP / Ruby / NodeJS / ...

HTML / CSS / JS

AngularJS / EmberJS / Backbone

Dnes

Požadavky na rychlé změny, traffic, zařízení

Životní cyklus

stávající aplikace / projektu

MySQL

PHP

HTML / CSS

Potřebujeme v aplikaci?

  • výkon
  • nové funkce
  • nahradit starou komponentu/framework

 

JAK?

  • Přidáme další vrstvu, dle potřeb

  • Refaktoring

  • Peníze / čas

  • Tým

  • Aplikace není rozsáhlá

1) Úprava stávající aplikace

2) Přepsat celou aplikaci

1) Úprava stávající aplikace

Nová vrstva

MySQL

Memcache

PHP

HTML / CSS

KnockoutJS

Pozn.: Nová vrstva / Výměna vrstvy / Odlehčíme

1) Úprava stávající aplikace

nová vrstva + změna stávající

MySQL

Memcache

MongoDb

PHP

HTML / CSS

AngularJS

Pozn.: Nová vrstva / Výměna vrstvy / Odlehčíme

1) Úprava stávající aplikace

změna

MySQL

Memcache

MongoDb

PHP

HTML / CSS

AngularJS

Redis

Pozn.: Nová vrstva / Výměna vrstvy / Odlehčíme

PostgreSQL

Memcache

MongoDb

NodeJS

HTML / CSS

AngularJS

Redis

PHP / Java

FrontEnd

Storage

Data

BackEnd

Rozděl a panuj

MsgQ

Požadavky

  • Odstranit přímé vazby mezi vrstvami

  • Server / PaaS / IaaS  (hosting)

  • Nastavit správně architekturu a vysvětlit lidem

 

Jak?

  • Stavět "mosty" mezi břehy - vytvářet API

  • Co nejtenčí vrstvy

  • Technologie navíc by neměla být překážkou

  • Nebát se daemonů (worker)

  • Vrstvy nebo část aplikace outsourcovat? (fakturoid)

  • Flexibilnost

  • Jsme více nezávyslí na vrstvách (výměna)

  • Škálovatelnost

  • Přehlednost kódu

    • Musíme si hlídat architekturu aplikace

  • Výkon

  • Při dobrém návrhu API na jedn. vrstvy

  • Při růstu - specializace lidí na danou vrstvu

    • Udržet povědomí lidí o jedn. vrstvách

Získáme

Souhrn

myslet na:

  • Data v separátních vrstvách

  • Nedatovou vrstvu můžeme kdykoliv nahradit

  • Vrstva by měla být:

    • rychlá, jednoduchá, přehledná

  • Povědomí o celé architektuře

Dotazy?

Ondřej Kryl

Vrstvy aplikace v čase

By Ondřej TouSt Kryl