TechKnowSurge
VideoSecurityFree

Microservices

Microservices architecture breaks applications into small, independently deployable services that communicate with each other, offering greater scalability and manageability than traditional monolithic designs. It has become a dominant approach in modern software development, particularly when combined with container technologies.

Complete this video to capture a CTF flag worth 1 point.

About this video

Microservices architecture restructures an application by splitting its functionality into small, independent services that each handle a specific task and communicate with one another to accomplish broader operations. This stands in direct contrast to monolithic architecture, where all application logic exists within a single codebase. Monolithic systems can become difficult to manage at scale—large codebases create contention during development, deployments affect the entire application, and scaling requires provisioning resources for the whole system rather than individual components. With microservices, each function—such as data transmission, data reception, or maintenance routines—becomes its own deployable unit. A front-end interface routes requests to the appropriate service, and additional instances of any service can be spun up on demand, making the overall system highly scalable and responsive to changing workloads. Maintenance tasks, for example, can be offloaded to serverless functions, while high-demand services can be scaled horizontally using containers. This separation also makes it easier for development teams to work on, test, and deploy individual components without affecting the rest of the application. That said, microservices are not a universal solution. The increased number of services and the communication between them introduce additional complexity and expand the potential attack surface from a security standpoint. In scenarios where raw performance is the priority, a well-optimized monolithic application may outperform a distributed microservices system. Despite these trade-offs, microservices have become the dominant architectural pattern for modern application development over the past decade, valued for the flexibility, maintainability, and scalability they bring to complex software systems.

What you'll learn

What's covered

Microservices

Key terms

Scalability
The ability of a system to handle increased load by adding resources without degrading performance.
Monolithic Architecture
An application design where all components are built and deployed as a single, unified codebase.
Microservices
An architectural approach that breaks an application into small, independently deployable services that communicate with each other.
Virtual Machine
VM
A software emulation of a physical computer that runs an operating system and applications.
Load Balancer
A device or software that distributes incoming network traffic across multiple servers to ensure availability and performance.
Attack Surface
The total set of points in a system where an unauthorized user can attempt to enter or extract data.
Serverless Computing
A cloud execution model where the provider dynamically manages server infrastructure, allowing developers to run code on demand without provisioning or managing servers.
Container
A lightweight, portable unit of software that packages an application and its dependencies to run consistently across environments.

Topics

Microservices Software Architecture Monolithic Architecture Containerization Serverless Computing Application Development

Transcript

Another thing that's become very popular is something called microservices. Microservices really allows us to break up our application into a much more manageable, much more scalable solution.

Deployment models

Now, it really doesn't matter what our deployment model is. We could have bare metal, we could have hypervisors, we could have containers, we could have serverless. We could have any of these deployment models but still be able to do microservices. However, some of these technologies have really compelled, or propelled, microservices to the next level. Something like container services really lends itself to being able to do these microservices.

Monolithic versus microservices

So what are microservices? Well, what is the antithesis of microservices? The antithesis of microservices would be monolithic. Monolithic just means that we have this huge program, all one code base. Maybe it's millions of lines of code that we have to go through to program this, and that can be problematic, because that's a lot to do. And then when we deploy it, we have to deploy all these lines of code. When we check it in and check it out, there can be contention issues. It just creates a lot of problems when we're trying to manage all of this code. And also, when it's being processed on the servers, it can cause problems as well.

So what we do instead is we break this code into smaller components and run it as individual services. We break the code down into these microservices, and then these microservices all talk with each other when they want something to be done. What happens is we break apart the processing, we break apart all of the code development. That just makes things really easy to manage all around.

What it looks like from an infrastructure standpoint

Let's say we have an app that's running on this phone, and if we have this monolithic design, maybe the app then communicates to a user interface. So it connects into this user interface, and that application does some sort of transmitting and transmits data. It does a receive data. It does some sort of maintenance tasks that are on here. It does this series of services kind of built in, or functions built in, with this one program. Now, the problem is, if it goes down, or maybe we need more processing power from a transmission unit or more processing power from a receiving unit — it's not very dynamic, it doesn't change with our needs.

So now let's look at what it would look like with microservices. This same app then connects to the front-end UI, and then that UI can deliver those services to that phone. And then what it will do is, if we are receiving something, that UI will go and do the receiving service and communicate with the receiving service. And then maybe it needs to do transmission, so then it does the transmitting. And then we just spin up more containers — let's say these are containers — we just spin up more containers if we have more needs for certain services. It makes it very scalable. Not only that, but we have this maintenance task that we can just turn into a script and run it serverless.

So what it does is it breaks apart this application into a lot of different services, and then we manage each of those services separately, making this much more dynamic in the way that we can monitor and track and program and develop. It just makes it much easier.

Microservices isn't the answer to everything

Now, microservices isn't the answer to everything. It does make things a little more complicated. There's more communication that's going on, so there's more chances for security issues. So it's not the solution for everything, and if you need performance, there might be better performance out of the monolithic, depending on what you're trying to do.

So it's not the solution for everything, but it is a route that many developers have been going for the last 10 years. They have been moving towards this microservices in order to better manage the programs that they're developing.

About TechKnowSurge

TechKnowSurge builds IT and cybersecurity professionals through hands-on, concept-first training built around real understanding — not memorization. Free interactive tools, structured programs, and 25+ years of real-world experience, all in one place.

Explore free tools and programs →