DevOps - Prerequisites for DevOps course

Duration
1-3 hours

Software presets

Install the following software on your computer:

Terminal

  • Most useful developer tool
  • Any number of customizations
  • On Windows: Linux Bash Shell, Powershell, Git Bash (don't use default CMD!)
  • On macOS / Linux: native Terminal

Bash

Learn Bash base commands:

Vi(m)

  • Bash text editor
  • Use : to enter command mode
    • w to write file
    • q to quit
    • q! to quit without saving
    • 'x' to write & quit
  • Use / to search for text
  • Use i to enter edit mode and ESC to exit it
  • vimtutor is the best tutorial to learn

Client VS Server

  • Two parts of a distributed computing model:
    • Client requests the info and displays it
    • Server processes the request and services the result
  • We will do server work + a bit of client-side

The IP protocol

  • Send data from one computer to another over a network (ex: client/server)
  • Use of IPV4 addresses (ex: 172.16.254.1), IPV6 also available but not much used
  • Data packaged in IP packets with 2 sections
    • Header: IP version, addresses, TTL, ...
    • Data: the packet's content

The HTTP protocol

  • Application protocol for transmitting hypermedia documents (HTML)
  • Two types of messages: requests & responses
  • HTTP message split between headers & body
  • HTTP response always contains
    • the protocol (HTTP/1.1)
    • a status code (200, 404, ...)
    • a status text (page not found)

API and REST API

  • Application Programming Interface (API)
  • In web: REST API
    • Expose a set of HTTP routes
    • Use HTTP verbs (GET / POST / PUT / DELETE)
    • Client connects to communicate
    • Usually communicating in JSON

REST API example: https://petstore.swagger.io/

SSL/TLS & HTTPS

(Secure Sockets Layer / Transport Layer Security)

  • Establish an encrypted link over a network
  • Exchange of public & private keys to secure the exchange
    • Server sends SSL certificate + public key
    • Client checks the certificate & answers with an encrypted session key
    • Client & server exchange messages encrypted with the keys to authenticate
  • SSL certificate has been certified by a renowned authority
  • HTTPS: HTTP secured with SSL/TLS

SSH - Secure shell

  • Cryptographic network protocol to operate network services securely over an unsecured network
  • Exchange of public & private keys to secure the exchange
    • Client has the private key
    • Server needs to have the associated public key
    • Client & server exchange messages encrypted with the keys to authenticate

The SFTP protocol

  • Send files over SSH
  • ex: deploy a website to a server
  • SFTP apps: FileZilla, Cyberduck, WinSCP, ...

Databases

  • RDBMS (basis for SQL): MySQL, PostgreSQL, Hive, Oracle
  • NoSQL:
    • Filesystems: posix and object storage
    • Documents store: MongoDB, ElasticSearch
    • Key/value and sorted key/value stores: Redis, LevelDB
    • Column families: HBase, Cassandra
    • Graph DBs: JanusGraph (ex-TitanDB), Neo4J

Security

Editors, IDE

As a developer, the terminal being your partner and the editor is your best friend:

  • Vim (Linux, macOS, Windows)
    Free, one of the most powerful, many will say the most powerful, single file or project-oriented.
  • Atom (Linux, macOS, Windows)
    Free project-oriented, minimalist, and productive UI (my day to day favorite editor), slow and memory hungry
  • VS Code (Linux, macOS, Windows)
    Free most popular editor, most active community, and plugins development
  • Sublime Text (Linux, macOS, Windows)
    Free, very fast, single file or project-oriented
  • BBedit (macOS)
    Free version very powerful, very fast
  • Notepad++ Windows)
    Free, almost a Windows standard, powerful and fast
  • WebStorm (Linux, macOS, Windows) Licensed, 30 days trial
  • ...

Programmation paradigms

  • "A way of programming"
  • Common paradigms:
    • Declarative: the program describes its desired results without explicitly listing commands or steps.
    • Imperative: the control flow is an explicit sequence of commands.
    • Functional: the computation proceeds by function calls, no global state
    • Object-oriented: everything is an object, functions are methods and are executed with the object's context
    • Event-driven: the control flow is triggered and determined by async actions

StackOverflow

  • Huge data source
  • Reactive community
  • Any subject
  • Lots of answered questions (> 1M !)
  • Don’t forget the source code!

JSON format

  • JSON is a subset of JavaScript, JavaScript is built upon JSON
  • Data format

Valid JavaScript:

const user = {
  firstname: 'Lucky',
  lastname: `Luke`,
  "password": "secret",
  age: 42,
  mood: 0.9,
  languages: ['en', ['fr_FR', 'fr_CA'] , , ],
  level: null,
  friends: undefined,
};

Valid JSON:

{
  "firstname": "Lucky",
  "lastname": "Luke",
  "password": "secret",
  "age": 42,
  "mood": 0.9,
  "languages": ["en", ["fr_FR", "fr_CA"]],
  "level": null
}

YAML format

  • Human-readable data-serialization format
  • Indentations are important!
  • "Yet Another Markup Language"

The same as above JSON, but YAML:

firstname: Lucky
lastname: Luke
password: secret
age: 42
mood: 0.9
languages:
  - en
  - - fr_FR
    - fr_CA
level: