Designing a microservices architecture or an iPaaS solution is only half the battle. Executing the project in a live enterprise environment without disrupting current business operations is a massive undertaking. The lifecycle involves:
When it is time to deploy the new integrated system, Enterprise Architects must choose a rollout strategy. The two most common approaches are the Big Bang and Incremental (Phased) rollouts.
Figure 1: Big Bang Rollout vs. Incremental Rollout (The Strangler Fig Pattern)
The old system is shut down on Friday night, and the new integrated system is turned on Monday morning. Data is migrated over the weekend.
Also known as the "Strangler Fig Pattern". The old system is slowly replaced module by module. The API Gateway routes traffic to the new module if it exists, otherwise it falls back to the legacy system.
Modern integrations (APIs, Microservices) are not deployed manually by copying files to a server. Enterprise teams use CI/CD pipelines to automatically test and deploy integration logic. This ensures that every change is verified before it reaches production.
Below is an example of a modern pipeline definition. When a developer updates the integration code, this pipeline automatically runs automated tests. If they pass, it builds a Docker container and deploys the new microservice to the cloud.
# .github/workflows/deploy-integration.yml
name: Deploy Billing Integration Service
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Run Integration Tests
run: |
echo "Running mock tests against Salesforce and ERP APIs..."
npm run test:integration
- name: Build Docker Image
run: docker build -t billing-integration-svc:latest .
- name: Push to Container Registry
run: |
docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }}
docker push myregistry.com/billing-integration-svc:latest
- name: Deploy to Kubernetes Production Cluster
run: |
kubectl apply -f k8s/deployment.yaml
kubectl rollout status deployment/billing-integration-svc
For the final assignment of this course, students will form groups to architect a complete integration solution for a hypothetical scenario.
Udayana University is modernizing its IT infrastructure. You have the following existing systems:
The Task: Provide an architectural diagram and an ADR (Architectural Decision Record) detailing how you will integrate these systems so that when a student pays tuition via the Mobile App, their E-Learning courses unlock instantly, and the Legacy Academic System is updated.
Considerations: Which parts use an API Gateway? Where do you place a Message Queue (MOM) to handle legacy bottlenecks? How do you secure the mobile app (JWT)?