ÚVOD / Studijní obory / Sylaby / Backendové systémy

Backendové systémy

Cílem předmětu je poskytnout studentům přehled v oblasti backendového vývoje. Probíraná budou témata z oblasti architektury backendových systémů, souvisejících oblastí objektové analýzy a návrhu, způsobu technické realizace backendu, využití relačních a nerelačních databází pro perzistenci dat backendu, způsoby testování a vytváření dokumentace. Absolvent předmětu získá schopnosti účastnit se vývoje backendové části informačních systémů. Pro technickou realizaci budou studenti používat NodeJS a programovací jazyk JavaScript.

Sylabus předmětu

Základní koncepty backendových systémů
  1. Architektura informačních systémů - vrstvená architektura, rozdělení FE a BE, microservices, podrobnější pohled na strukturu backendu.
  2. Základní koncepty architektury back-endových systémů - služby (uuCMDs), model/dao/data entity perzistence, autentizace, autorizace, error handling, škálování a další.
Analýza a návrh
  1. Objektově orientovaná analýza a návrh - principy přidělování odpovědností, high cohesion, low coupling.
  2. Jak správně vytvořit a popsat design backendu - typická struktura designu, nástroje, základní schémata.
  3. Základní úrovně designu, struktura designu - koncepční návrh, detailní design
  4. Koncepční návrh - popis architektury, ukázky.
  5. Detailní design - dokumentace služeb a jejich vnitřní realizace.
Technická realizace backendu
  1. Způsoby realizace backendu - nejčastěji používané technologie a jejich srovnání, ukázky.
  2. Podrobnější pohled na realizaci backendu v NodeJS/JavaScript - realizace základních prvků architektury backendu, implementace služeb (REST služby), Data Access Object, připojení k DB, transakce.
  3. Realizace dalších architektonických konceptů backendu - autentizace a autorizace, error handling, validace, logování.
Využití databází - relační a nerelační
  1. Relační databáze - základní vlastnosti, výhody, nevýhody, jazyk SQL, transakce, normální formy.
  2. Pokročilé koncepty v relačních databázích - indexy, partitioning, SQL views. 
  3. Pokročilé použití jazyka SQL -  dotazy nad více tabulkami, poddotazy.
  4. Nerelační databáze - základní typy nerelačních databází a jejich vlastnosti - dokumentové, key-value story, objektové, RDF, kdy použít který typ databáze.
  5. Dokumentové nerelační databáze - základní principy, dokumenty, kolekce, indexy, dotazování, zajištění vysokého výkonu a vysoké dostupnosti.
  6. MongoDB - představení, instalace, základní operace, dotazování, indexování, replikace, zálohování
  7. Pokročilé použití MongoDB - relace, databázové reference, map reduce, použití regulární výrazů, pokročilé indexování
Testování a další témata
  1. Principy testování backendu - typy testů (commit fáze: unit, komponentové, integrační; akceptační fáze: funkční, výkonnostní, bezpečnostní),  automatizace testů, vhodné nástroje a postupy. 
  2. Další související témata - revize kódů, statická analýza kódů. 
  3. Správa zdrojových kódů - source code repository (GIT), verzování, branchování. GitFlow. 
  4. Development pipeline, Continuous Integration, Continuos Delivery/Deployment, kontainerizace (Docker).

Doporučená literatura

Základní učební texty a pomůcky

  1. MEAD, A. Learning Node.js Development: Learn the fundamentals of Node.js, and deploy and test Node.js applications on the web, Packt Publishing,. 2018.
  2. BROWN E.: Learning JavaScript: JavaScript Essentials for Modern Application Development 3rd Edition, O'Reilly Media, 2016.
  3. LARMAN, C. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process (3nd Edition), New York, Prentice Hall, 2004
  4. KOVÁŘ V. et al.: uuAppServer - Dokumentace. Unicorn, 2018. ISBN 978-80-87349-26-7
  5. KOVÁŘ V. et al.: Dokumentace uuAppServer - NodeJS. Unicorn, 2018. ISBN 978-80-87349-20-5

Doplňující a rozšiřující učební texty

  1. FOWLER, M. Patterns of Enterprise Application Architecture, Pearson Education (US), 2002
  2. REDMOND, E. a WILSON, J. R. Seven Databases in Seven Weeks, Pragmatic Bookshelf, 2017
  3. FOWLER, M. UML Distilled, Addison-Wesley Longman, Amsterdam, 2003
  4. HUMBLE, J.; FARLEY, D. Continuous Delivery Reliable Software Releases through Build, Test, and Deployment Automation, Pearson Education, 2010
  5. KOVÁŘ V. et al.: Dokumentace uuAppServer - Java. Unicorn, 2018. ISBN 978-80-87349-27-4