I began my network automation journey in earnest a few years ago. As I learned about the building blocks of automation, I found my mind wandering beyond the confines of vendor-driven network designs. In my years as a networking engineer I have learned that I need to deliver a real product, satisfying real business requirements, to truly understand how a thing works. With those principles in mind I set out to build my online resume (www.tomammon.net) as a microservices-oriented web application. In this series of blog posts I will describe its architecture and share lessons that I have learned along the way.
My resume application needed to demonstrate my basic functional understanding of:
- Microservices Architecture
- Application Delivery Control (load balancing)
This was in addition to all of the packet delivery expertise I have developed over the course of my career. In addition, I wanted to provide for some level of fault tolerance and high availability. I would need to make use of virtualization technologies to meet all of the above requirements with minimal costs, since no revenue would be directly generated by the application.
Finally, I should say that my goal was not to become a software developer, or to claim that I have any special proficiency with any of these technologies, outside of the networking components. My purpose with the project was to gain an appreciation for the workloads that run on the networks I build, and to gain the perspective needed to be a successful network architect.
At the highest level, the resume application consists of 4 major components:
- Content Nodes – the discrete compute units that serve application content to users
- Data Warehouse – a central database that houses all of the dynamic content
- Domain Name System (DNS)
- Internet Transport
The links below will dive into the details of how these components interact and connect. I’ll also discuss the supporting network infrastructure and other parts of the system that make it all work.