Skip to content

Latest commit

 

History

History
480 lines (304 loc) · 4.32 KB

presentation.md

File metadata and controls

480 lines (304 loc) · 4.32 KB
author date title
Josef Pospíšil
2022-03-07
The Intro

Contemporary Backend Development


Good Old Friends

  • Hello again!
  • Black Swan Song

Organization


¡¡¡COMPUTERS!!!


Week

  • Monday - Tools, APIs, Languages
  • Tuesday - Serving
  • Wednesday - Break
  • Thursday - Storage
  • Friday - Evaluation

Flyby style


More Practice

Hopefully I'll get you to practice little more than last semester.


More Practice

FREAKING COMPUTERS


Any questions

Speak now, or be silent for the week.


Show yourselves!

I would love to see your works.


Let's Go!

===


author: Josef Pospíšil date: 2022-03-07 title: Tools, APIs & more

Contemporary Backend Development


Tools, APIs & more


Github

https://github.com/pepe/culs-backend-summer-2022


Little aside

  • Frontend
  • Serverless, containers, microservices

Project

Backend for storing and managing presentation files for Showrum.


Project specification

  • Presentation management
  • User management
  • User authentication and authorization

Project requirements

  • Groups
  • Public git repo

FOSS FTW

  • Everywhere
  • You can help
  • Power for the good

Tools - Basics

  • VisualStudio Code Editor
  • Google Chrome
  • Hands-on

Tools - Remoting

  • SSH, RDP, TeamViewer
  • Curl, Wuzz
  • Hands on

Tools - Docker

  • Container driven development
  • Prepared machines
  • Multi-platform
  • Hands-on

Tools - Docker

  • Dockerfile
  • Simple static hosting
  • Sample project
  • Hands-on

APIs - Basics

  • Application Programming Interface
  • Interface definitions
  • Every SW has it

APIs - Web

  • Representational state transfer
  • Swagger
  • JSON API
  • Apiary

GraphQL

  • By FB
  • New paradigm getting traction
  • Declarative
  • Today's task

GraphQL

{
  film(id: "ZmlsbXM6MQ==") {
    title
    director
    releaseDate
    planetConnection {
      planets {
        name
}}}}

Basic architecture

  • Storage
  • Serving
  • Presentation

Second aside

  • FaaS
  • IaaS
  • PaaS
  • SaaS

Q&A

===


author: Josef Pospíšil date: 2022-03-08 title: Serving

Contemporary Backend Development


Tuesday - Serving


Languages

  • Imperative
  • Object Oriented
  • Functional
  • Hybrid

Imperative

  • C
  • Lua
  • Out of favor these days

Object Oriented

  • SmallTalk
  • Java, C#, C++, Swift
  • Ruby, Python, PHP
  • In full swing

Functional

  • Lisp, Clojure, Racket
  • Haskel, OCaml, Elm
  • Elixir, Erlang

One I forgot to mention

  • Golang
  • Google developed
  • Infrastructure
  • Popular

And one I love the most

  • Janet
  • Lisp syntax
  • Multiparadigm

Multiparadigm

  • Almost All of the already mentioned
  • JavaScript

Frameworks

  • Ruby - Ruby on Rails
  • Python - Django
  • Java - Play
  • PHP - Symphony
  • Node - Express

Frameworks

  • JavaScript - Feathers
  • Go - Gorilla
  • Elixir - Phoenix
  • Janet - Good Place

Feathers.js

  • Node.js based
  • REST API first
  • Storage agnostic
  • Generating

Express.js

  • Node.js based
  • Very simple a configurable
  • Used heavily
  • Hands on

HTTP servers

  • Apache
  • Nginx
  • Caddy

Certificates

  • Many providers
  • Let's encrypt
  • Caddy

Proxy

  • httpd process routing
  • nginx example
  • Hands on

Hosting service providers

  • Amazon AWS
  • Microsoft Azure
  • Digital Ocean
  • Hands on

Serverless

  • Front-end rich applications
  • Use services for all the tasks
  • Auth0
  • AWS Dynamo, Lambda
  • OpenSensors

Q&A

===


author: Josef Pospíšil date: 2022-03-10 title: Storage

Contemporary Backend Development


Storage


Kinds

  • File
  • Databases

File formats

  • Binary
  • CSV
  • Markdown
  • XML
  • JSON

Databases

  • Relational
  • Key/Value
  • Document
  • Graph

Relational

  • MySQL
  • PostgreSQL
  • MSSQL

Key/Value

  • Redis
  • Riak
  • AWS DynamoDB
  • LevelDB

Document

  • MongoDB
  • CouchDB
  • RethinkDB

Graph

  • Neo4J
  • OrientDB
  • ArangoDB

Search engines

  • Lucene
  • ElasticSearch
  • SolR

MongoDB

  • JSON based
  • Dynamic Schema
  • Query Language

Express.js statuses

  • Set on response
  • No need for any other information

Mongoose.js

  • Access MongoDB from JS
  • Very Simple API
  • Models
  • Querying