BankSim: A Learning Project and Testbed for New Technologies
BankSim is an educational project created to develop skills in the modern enterprise technology stack. Its purpose is not only to build expertise but also to serve as a testbed for experimenting with new technologies, such as new versions of Spring and other frameworks, in the future. The project is designed to push my understanding of current industry practices while allowing flexibility in the learning process. It provides a valuable opportunity to practice using various tools and learn from mistakes, which are essential for growth. Additionally, it helps me improve my problem-solving abilities and technical skills in an environment that closely simulates enterprise-level challenges.
For building this application, I chose a microservices architecture because it provides the opportunity to gain experience with a wide range of tools and components that are relevant for modern development. This architecture also allows better separation of responsibilities and ensures greater reliability of the system. Moreover, it offers flexibility for future upgrades or technology integrations. It also ensures scalability, which is an essential factor for any distributed system.
In the initial phase of development, I decided not to stick to a specific architectural pattern, such as Event-Driven or Domain-Driven Design, as it could limit the tools I could use and require additional time to implement. Instead, I focused on quickly achieving results and experimenting with different approaches to find the most effective solutions for the given challenges. The first release of the project includes aspects of different architectural patterns and various methods of interaction between microservices, allowing me to explore and refine different solutions.
Technology Stack for the First Release
• Spring Boot (Data JPA, Web, WebFlux, Security, Validation): the foundation for building
microservices.
• Springdoc OpenApi-UI: for documenting REST APIs.
• Spring Kafka: for message exchange between services, enabling asynchronous communication
and
supporting large data volumes.
• Spring Cloud (Gateway, Config, Eureka Discovery, OpenFeign): for microservice integration,
request routing, and centralized configuration.
• Flyway: for database migration management.
• gRPC (com.google): for high-performance microservice communication, reducing latency
compared
to traditional REST APIs.
• PostgreSQL: relational database for structured data storage.
• MongoDB: document-oriented database for unstructured data storage.
BankSim is a project that not only enhances my technical skills but also allows me to experiment with new tools and approaches. Testing new solutions in this project will help me stay current with industry trends and apply these skills to deliver value in a real-world enterprise environment.