The Backend Engineering Show with Hussein Nasser

The Backend Engineering Show with Hussein Nasser

By Hussein NasserTechnology
Download on the App Store

The Backend Engineering Show with Hussein Nasser episodes

  • Episode 117 - Database Engines

    Database engines or storage engines or sometimes even called embedded databases is software library that a database management software uses to store data on disk and do CRUD (create update delete)

    Embedded means move everything in one software no network client server.

    In this video I want to go through the few popular database engines, explain the differences between them and finally I want to spin up a database and change its engine and show the different features on each engine

    Timecodes

    What is a database Engine 3:00

    myISAM 9:43

    Aria 16:30

    InnoDB 19:00

    XtraDB 25:30

    LevelDB 27:40

    RocksDB 34:00

    SQLite 38:11

    BerkelyDB 42:00

    Demo! 47:11

    Cards

    ACID 4:30

    mysql/javascript 56:17

    Resources

    https://youtu.be/V_C-T5S-w8g

    https://mariadb.com/kb/en/library/changes-improvements-in-mariadb-102/

    https://mariadb.com/kb/en/library/why-does-mariadb-102-use-innodb-instead-of-xtradb/

    https://github.com/facebook/rocksdb/wiki/Features-Not-in-LevelDB

    https://mariadb.com/kb/en/library/aria-storage-engine/

    Best of MyISAM and InnoDB

    What is the performance impact of using CHAR vs VARCHAR on a fixed-size field?

    MySQL :: MySQL 8.0 Reference Manual :: 15.6.2.1 Clustered and Secondary Indexes

    Why Uber Engineering Switched from Postgres to MySQL | Uber Engineering Blog

    1 hr 8 min
  • Episode 116 - Database Sharding

    Database Sharding Crash Course (with Postgres examples)

    Database sharding is process of segmenting the data into partitions that are spread on multiple database instances to speed up queries and scale the system.

    What is sharding?

    sharing key / partition key

    Consistent Hashing

    Horizontal partitioning vs Sharding

    Example

    Pros and cons

    What is Sharding? 1:30

    Consistent Hashing 4:50

    Horizontal partitioning vs Sharding 7:36

    Example 8:45

    Spin up Docker Postgres Shards 10:02

    Write to the shard 17:25

    Read from the Shard 39:20

    Pros & Cons 51:10

    Cards

    Postgres pgadmin Docker 8:54

    Postgres Javascript 18:18

    URL vs Query param 22:30

    CORS 29:30

    sql injection 42:40

    Source Code

    https://github.com/hnasr/javascript_playground/tree/master/sharding

    Docker commands (including pgadmin)

    https://github.com/hnasr/javascript_playground/blob/master/sharding/shards/commands.txt

    Dockerfile & init.sql

    https://github.com/hnasr/javascript_playground/tree/master/sharding/shards

    Horizontal partitioning vs Sharding

    HP same database instance so you can still join

    sharding across instances (different server)

    Pros

    Extreme scale rdbms

    Optimal and Smaller index size

    Cons

    Transactions across shards problem

    Rollbacks

    Schema changes

    Complex client (aware of the shard)

    Joins

    Has to be something you know in the query

    Example

    URL shortener

    create table

    CREATE TABLE public.test1

    (

    id serial NOT NULL primary key,

    url text,

    url_id character(5)

    )

    Spin up 3 instances

    p1

    P2

    P3

    post

    get

    1 hr
  • Episode 115 - Varnish HTTP Accelerator
    Varnish is a reverse proxy web accelerator  Written in C designed to improve HTTP performance by using server side caching.
    In this video I’m going to go through how Varnish works, we will spin up a Varnish docker container and finally talk about the pros and cons of this tech.
    Agenda
    Classic HTTP Architecture
    How Varnish Works?
    HTTP Setup - Varnish
    HTTPS Setup - Varnish with Caddy as TLS Terminator.
    Varnish Pros & Cons
    Summary
    Pros
    Cache & prefetching documents
    Resolve DNS hostnames in documents
    Rewrite scripts to optimize code
    Load Balancing
    Backend Connection Pooling
    Varnish Modules (VMODS, e.g. rewrite headers)
    Edge side includes (personalized dynamic page)
    Cons
    Cache Invalidation
    Only works on unencrypted HTTP
    For HTTPS frontend, terminate TLS
    For HTTPS backend, no solution in Varnish open source
    Can’t cache POST requests (e.g. GraphQL queries)
    HTTP/2 backends won’t benefit
    docker commands
    docker run --name varnish -p 8080:80 varnish
    docker cp default.vcl varnish:/etc/varnish
    default.vcl
    vcl 4.0;
    backend default {
    .host = "husseinmac";
    .port = "2015";
    }
    timecodes
    Classic HTTP Architecture : 1:53
    How Varnish Works 3:50
    Demo HTTP 7:50
    Demo HTTPS 18:23
    Varnish Pros 28:43
    Varnish Cons 39:26
    Cards:
    Connection Pooling 2:15 https://www.youtube.com/watch?v=GTeCtIoV2Tw
    Layer 4 vs Layer 7 Load balancing 6:25 https://www.youtube.com/watch?v=aKMLgFVxZYk
    GET vs POST 6:48 https://www.youtube.com/watch?v=K8HJ6DN23zI
    Postgres NodeJS Chrome 8:23 https://www.youtube.com/watch?v=0JNq46eFuOM
    Redis 46:13 https://www.youtube.com/watch?v=sVCZo5B8ghE
    TLS Termination 49:35 https://www.youtube.com/watch?v=H0bkLsUe3no
    tags:
    varnish http accelerator, varnish pros and cons, varnish with https, varnish disadvantages
    Resources
    edge side includes
    https://www.fastly.com/blog/using-esi-part-1-simple-edge-side-include
    Cache invalidation varnish
    https://www.smashingmagazine.com/2014/04/cache-invalidation-strategies-with-varnish-cache/
    ——
    52 min
  • Episode 114 - HTTP/2
    short is a major revision of the hyper text transfer protocol that improves the performance of the web. It uses a binary protocol and multiplexing.
    In this video I want to go through how HTTP/2 works, its pros and cons and show the performance difference between HTTP 1.1 and HTTP/2
    Http/1
    request has to wait for a response
    And if you used up your connection response you can send anything else.
    Source Code: https://github.com/hnasr/javascript_playground/tree/master/staticpage
    So hack !
    6 tcp connections
    Pros
    One connection
    Multipex
    Push ( have to enable)
    Hpack (compress)
    Cons
    Abuse push
    Proxies that dont support it might slow down
    Load balancer layer 7 (a layer 7 load balancer that doesnt support h2 will slow down when your web server supports it)
    Cards
    1:25 HTTP crash course
    12:30 TLS
    Time codes
    HTTP 1.1 2:15
    HTTP/2 5:50
    HTTP/2 With Push 8:25
    HTTP/2 Pros 9:48
    HTTP/2 Cons 14:10
    Demo 17:15
    +----------+--------+---------+---------+
    | Protocol | Online | Fast 3G | Slow 3G |
    +----------+--------+---------+---------+
    | HTTP 1.1 | 94 ms | 10 s | 36 s |
    +----------+--------+---------+---------+
    | HTTP/2  | 171 ms | 2.7 s  | 10 s |
    +----------+--------+---------+---------+
    25 min
  • Episode 112 - Tor (The Onion Router)

    Tor or (The Onion Router) is a free and open source project for allowing anonymous communication.

    In this video I want to discuss this technology and explain how it works.

    • What can sniffers really see?
    • Why Tor? Why don’t we just use a VPN?
    • How Tor Works?
    • More about Tor
    • So if you are interested stay tuned.

      Cards:

      6:00 TLS

      10:53 symmetric key encryption

      TimeCodes:

      Normal Request 1:30

      What sniffers see 4:30

      Why Tor and not VPN? 6:00

      How Tor Works 8:50

      More tor info 21:00

      Tor Directory

      Relay node

      Exit node

      Guard node

      24 min
    • Episode 111 - Kafka

      Apache Kafka is a distributed stream processing software developed by LinkedIn and written in Scala and Java.

      In this video I want to focus on the basics on Kafka, talk about how it works give finally spin up a kafka cluster and write a producer and a consumer.

      Kafka Components

      _ producer

      _consumer

      _topic

      _partition

      How Kafka works

      Example ( Ride sharing )

      Spin Kafka cluster

      Write a producer

      Write a consumer

      Kafka Applications

      Pros and Cons

      1 hr 19 min
    • Episode 110 - Do you need a VPN?
      Tom Scott Full Video
      https://youtu.be/WVDQEoe6ZWY
      Tom Scott is a YouTuber with around 2M subscribers who discusses and specialized in computer security. I always enjoy his videos specially those on computerphile. He recently made a very interesting video titled This video is sponsor by —- We all probably know this is a reaction video to NordVPN Hack.
      He is really smart and not just because of his accent
      I wanted to make a video to elaborate on some of the statements that Tom made in his video and how that actually work.
      Cards
      5:30 TLS https://www.youtube.com/watch?v=AlE5X1NlHgg
      12:24 TLS Termination https://www.youtube.com/watch?v=H0bkLsUe3no
      Forged certificate
      https://slate.com/technology/2016/12/how-the-2011-hack-of-diginotar-changed-the-internets-infrastructure.html
      16 min
    • Episode 109 - RabbitMQ

      RabbitMQ

      RabbitMQ is an open source distributed message queue written in Erlang and supports many communication protocols. It was trying to solve the spaghetti 🍝 mesh architecture where every client is communicating with other client in System by introducing an extra layer in the middle.

      (slide)

      In this video we will explain basic components of RabbitMQ Such as AMQP, channel, queue, publisher, consumer and some stuff, we will also learn how to spin up a RabbitMQ server and we will finally write some code to develop a publisher client that post messages to RabbitMQ. We will also write the consumer piece which will be the code that reads rabbitMQ. Finally I will talk about my personal thoughts on this tech.

      • RabbitMQ Components(slide)
      • *Publisher
      • *Consumer
      • *Connection
      • *Channel
      • *Queue
      • Spin RabbitMQ server with Docker
      • Write a Publisher client NodeJs
      • Write a Consumer client Nodejs
      • My Thoughts about this tech
      • Summary
      • timecodes

        components 2:00

        spin up docker rabbit 8:30

        Write a Publisher client NodeJs 11:00

        Write a consumer client NodeJs 20:30

        my thoughts 33:50

        Source Code: https://github.com/hnasr/javascript_playground/tree/master/rabbitmq

        Example

        Schedule async job

        Exchange

        Queues

        Publisher

        Consumer

        AMQP

        Channel

        Connection

        HTTP

        AMQP

        Uses Channels and Queues

        Multiples channels into one connections

        docker run --name rabbitmq -p 5672:5672 -d rabbitmq

        docker run --name rabbitmq -p 5672:5672 -p 15672:15672 -d rabbitmq:3-management

        HTTP

        fetch("http://localhost:15672/api/vhosts”, {headers: {"Authorization" : `Basic ${btoa('guest:guest')}`}}).then(a=>a.json()).then(console.log)

        fetch("http://localhost:15672/api/channels", {headers: {"Authorization" : `Basic ${btoa('guest:guest')}`}}).then(a=>a.json()).then(console.log)

        fetch("http://localhost:15672/api/queues", {headers: {"Authorization" : `Basic ${btoa('guest:guest')}`}}).then(a=>a.json()).then(console.log)

        https://www.squaremobius.net/amqp.node/channel_api.html#channel_bindExchange

        https://www.rabbitmq.com/tutorials/tutorial-three-javascript.html

        43 min

      About The Backend Engineering Show with Hussein Nasser

      From the publisher's feed

      Welcome to the Backend Engineering Show podcast with your host Hussein Nasser. If you like software engineering you’ve come to the right place. I discuss all sorts of software engineering technologies and news with specific focus on the backend. All opinions are my own.

      More shows like The Backend Engineering Show with Hussein Nasser

      Freakonomics Radio by Freakonomics Radio + Stitcher

      Freakonomics Radio

      31,921 Listeners

      Software Engineering Radio - the podcast for professional software developers by team@se-radio.net (SE-Radio Team)

      Software Engineering Radio - the podcast for professional software developers

      274 Listeners

      Risky Business by Risky Business Media

      Risky Business

      373 Listeners

      Science Vs by Spotify Studios

      Science Vs

      12,154 Listeners

      Syntax - Tasty Web Development Treats by Wes Bos & Scott Tolinski - Full Stack JavaScript Web Developers

      Syntax - Tasty Web Development Treats

      987 Listeners

      Darknet Diaries by Jack Rhysider

      Darknet Diaries

      8,077 Listeners

      Practical AI by Daniel Whitenack and Chris Benson

      Practical AI

      210 Listeners

      Within Reason by Alex J O'Connor

      Within Reason

      1,628 Listeners

      All-In with Chamath, Jason, Sacks & Friedberg by All-In Podcast, LLC

      All-In with Chamath, Jason, Sacks & Friedberg

      10,107 Listeners

      Dwarkesh Podcast by Dwarkesh Patel

      Dwarkesh Podcast

      550 Listeners

      Big Technology Podcast by Alex Kantrowitz

      Big Technology Podcast

      512 Listeners

      Hard Fork by The New York Times

      Hard Fork

      5,561 Listeners

      The AI Daily Brief: Artificial Intelligence News and Analysis by Nathaniel Whittemore

      The AI Daily Brief: Artificial Intelligence News and Analysis

      670 Listeners

      Prof G Markets by Vox Media Podcast Network

      Prof G Markets

      1,440 Listeners

      The Pragmatic Engineer by Gergely Orosz

      The Pragmatic Engineer

      74 Listeners