Introducing the Cowboy Web Server
The web server is a key component of any modern-day web framework. Expanding on the point made in the preceding quote by Rob Pike, the Cowboy web server, written in Erlang, is also in a way implemented in C. Cowboy is the default web server used by Phoenix, the ubiquitous web framework in Elixir.
In this chapter, we will not be learning C, unfortunately, but we will take a closer look at how a web server is designed. We will provide some background on how a web server is built and set up to communicate with a client using HyperText Markup Language (HTML).
We will also learn the fundamentals of how HTTP requests and responses work, including their anatomy. We will then learn how to construct an HTTP response and send it using a web server. Moreover, we will learn the fundamentals of web server architecture by examining the components of Cowboy. Lastly, we will learn ways to test a web server and measure its performance. Doing this will put us in a better position to build our own web server in the next chapter.
The following are the topics we will cover in this chapter:
- What is a web server?
- Fundamentals of client-server architecture
- Fundamentals of HTTP
- How an HTTP server works
- Using Cowboy to build a web server
- Using dynamic routes with Cowboy
- Serving HTML
- Testing the web server
Going through these topics and looking at Cowboy will allow us to build our own HTTP server in Chapter 2.