Course Outline
Introduction
- System and service architecture, Platform-as-a-Service (PaaS), and cloud-native design for government
Overview of Monolithic System Architecture
- Running an entire monolithic application's functionality in a single process for government operations
- Scalability through replication across multiple servers to support high demand environments
- Protocols used in monolithic systems: Enterprise Application Integration (EAI), Common Object Request Broker Architecture (CORBA), etc.
Overview of Web Services
- Service-Oriented Architecture (SOA) and Microservices Architecture for government IT modernization
Service-Oriented Architecture (SOA)
- Benefits and costs of SOA in the context of public sector operations
- Successes and failures in implementing SOA within government agencies
- Messaging and Enterprise Service Bus (ESB) for efficient data exchange
- Infrastructure and tools supporting SOA, including middleware solutions
How Microservices Implement Web Service Concepts
- Focusing on a single responsibility to enhance modularity and maintainability
- DevOps practices for continuous improvement and rapid deployment in government IT projects
- Continuous Deployment and Delivery (Continuous Integration, Continuous Build Process, etc.) to ensure reliability and agility
- Lightweight protocols to reduce overhead and improve performance
Microservice Protocols and Standards
- HTTP, Java Message Service (JMS), Advanced Message Queuing Protocol (AMQP), WebSockets, JSON, etc.
Development Frameworks for Building Microservices
- Java-based frameworks such as Spring Cloud for robust and scalable applications
- Javascript-based frameworks like Seneca for flexible and dynamic microservices
Decomposing a Monolith Application
- Developing independently deployable applications to enhance flexibility and scalability for government systems
- Organizing microservice applications around business capabilities to align with mission objectives
- Case study: Migrating a monolithic application to three core microservices to improve performance and manageability
Setting up a Spring Cloud Development Environment
- Setting up Docker and Docker Compose for containerized development
- Configuring environment variables to ensure consistent deployment across different environments
Overview of Spring Cloud and Spring Boot
- Spring Cloud sub-projects: Config Server & Bus, Eureka, Ribbon, Feign, and Hystrix for enhanced microservices management
- Spring Boot for rapid application development with minimal configuration
Creating a Spring Boot Application
Centralized, versioned configuration management with Spring Cloud Config
Dynamic configuration updates with Spring Cloud Bus
Service discovery with Eureka
Load balancing with Ribbon
Applying circuit breakers with Hystrix to enhance resilience
Declarative REST clients with Feign for simplified API integration
Working with API Gateway
Securing a microservice application to ensure data integrity and compliance
Tracing microservices to uncover latencies and optimize performance
Deploying Microservices
- Containers (Docker, Kubernetes, LXC, etc.) for consistent and isolated environments
- Configuration Management (Ansible, etc.) to automate setup and maintenance
- Service discovery to enable dynamic service registration and lookup
- Monitoring and managing microservices to ensure reliability and performance
- Infrastructure for Microservices to support scalable and resilient systems
Cloud and Auto Scalability of Microservices
- Microservice redundancy and fail-over strategies to ensure high availability
- Performance scalability for microservices to handle varying workloads
- Auto-scalability to dynamically adjust resources based on demand
- Implementing Microservices on OpenStack, AWS, and other cloud platforms to leverage advanced cloud capabilities
Troubleshooting Common Problems for Distributed Applications
- Complexity of the ecosystem in government IT environments
- Network performance issues that can impact service delivery
- Security challenges and best practices to protect sensitive data
- Deployment strategies to minimize downtime and ensure smooth transitions
- Testing methodologies to validate functionality and performance
- Nano-services and their role in microservice architecture for government applications
Final Considerations for Building Production-Ready Systems
- Making the system easy for beginners to understand and use, enhancing user adoption and support
- Making the system complete so that it can serve as a robust foundation for enterprise applications in government operations
Summary and Conclusion
Requirements
- An understanding of software and system engineering for government
- Experience in Java development
- Familiarity with the Spring Framework
Audience
- Java developers seeking to quickly build and deploy microservices within public sector environments
- System architects aiming to implement a microservice architecture for government operations
Testimonials (5)
Practise exercises in EA.
Pawel - Krajowa Szkola Skarbowosci
Course - UML in Enterprise Architect (workshops)
It was dynamic and very practical, in addition to the fact that a virtual machine was provided to us through a URL
Aida - ENGINEERING AND SERVICES JF S.A. DE C.V.
Course - Spring Cloud for Microservices
-Knowledge of the teacher in the subject was really good. He was able to explain very nicely and was able to answer all the questions at that moment. -To be able to know what all the tool is capable of was really good. -The structure he showed, like using scenarios and traceability would be really helpful in my day-to-day work.
Harsha Jain - Scania CV AB
Course - Introduction to Enterprise Architect
Great knowledge.
Marie - Forsvarets forkningsinstitutt
Course - Systems Modeling with SysML and Enterprise Architect (EA)
Practical examples, and open disussions