HTTP Bottom Up is a two-day hands-on course to explore everything that happens behind the scenes of your favorite web framework.
This workshop explores building web applications starting all the way from bare sockets, without using any framework. Even though this is not the most production way to build web applications, this exercise will give a chance to observe and understand everything that happens behind the scenes of any web application.
After the course, the participants will be in a better position to architect web applications and reason about their performance and scaliabity.
The workshop uses Python 3 for all the examples and exercises.
The course is designed for professional software developers involved in developing web applications.
This course assumes that the participants already have decent experience in building web applications and familiarity with Python programming language.
- Experience in building web applications
- Familiarity with Python programming language
- Introduction to the key ideas behind the Internet, including IP address, domain name, ports and sockets.
- Introduciton to client-server architecture
- Study of popular internet applications like SMTP, NTP, DNS etc.
- Building Internet applications
- Concurrency patterns (multi-threading, multi-processing and async)
The World Wide Web
- Understanding URIs and Hypertext
- Deep dive into HTTP
- Exploring HTTP methods, status codes and using curl and netcat
Building an HTTP client
Write programs to:
- crawl web pages
- submit forms
- extract information from web pages
Building an HTTP server
Build a web server from scratch that supports:
- serving static files
- Writing Simple WSGI applications
- Implement a WSGI server
Building a web framework
Build a web framework from scratch containing the following features:
- routing system
- utilities to read query string
- access HTTP headers
- read POST input
- handle cookies and sessions
Best Practices and Scalability Considerations
- Discussion on best practices including REST
- Discussion on scalability
The suggested duration of the course is 2 days.
This is an interactive course and it is suggested to limit the number of participants to 15 or less for it to be effective.