DEV Community

Srinivasaraju Tangella
Srinivasaraju Tangella

Posted on

From WARs to Containers: How Build Automation Evolved from Traditional Web Apps to Microservices

In the
 world of software delivery, how we build and ship applications has changed dramatically.
Let’s take a simple look at the difference between traditional web build automation (think WAR files and Tomcat) and microservices build automation (think Docker and Kubernetes).

πŸ”Ή Traditional Web Build Automation (The Monolith Way)

In a monolithic world, you usually had one giant codebase producing a WAR/EAR file.
The build automation process looked something like this:

1.Checkout Code
Single repo with the entire application.

git clone https://github.com/company/monolith-app.git

2.Compile & Package
Use Maven to build everything at once:

mvn clean package

Output β†’ target/myapp.war

3.Deploy
Copy WAR into Tomcat or JBoss:

cp target/myapp.war $TOMCAT_HOME/webapps/

4.Restart Server
Usually required downtime.

⚠️ Problems:

Slow builds (even for tiny changes).

Deployments were risky.

Scaling meant buying a bigger server.

πŸ”Ή Microservices Build Automation (The Cloud-Native Way)

With microservices, each service has its own repo and build pipeline.
The process looks very different:

1.Checkout Only That Service

git clone https://github.com/company/user-service.git

2.Compile & Package
Each service builds independently:

mvn clean package

Output β†’ target/user-service.jar

3.Dockerize It
Wrap the service into a container:

FROM eclipse-temurin:17-jdk
COPY target/user-service.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

Build the image:

docker build -t myorg/user-service:1.0 .

4.Push to Registry

docker push myorg/user-service:1.0

5.Deploy to Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
name: user-service
spec:
replicas: 3
selector:
matchLabels:
app: user-service
template:
metadata:
labels:
app: user-service
spec:
containers:
- name: user-service
image: myorg/user-service:1.0
ports:
- containerPort: 8080

6.Rolling Updates
Kubernetes replaces pods gradually β†’ zero downtime.

⚑ Benefits:

Faster builds (only the changed service).

Zero-downtime deployments.

Easy scaling (just add replicas).

Top comments (0)