Introduction

When developing microservice applications like “MyOwnTutorial”, a critical early decision involves choosing between a consistent technology stack across all services or allowing each service to use its own stack.

Benefits of a Consistent Technology Stack

  1. Easier Development and Maintenance - Engineers need proficiency in only one set of tools and languages, simplifying both development and uniform updates across services.

  2. Simplified Onboarding - New team members need to learn a single stack to contribute to any application component.

  3. Improved Code Reusability - Components can be shared more easily between services using identical stacks.

Drawbacks of a Consistent Technology Stack

  1. Limited Flexibility - Different services may have different requirements, and forcing a single stack could limit optimal functionality.

  2. Potential for Suboptimal Choices - Less efficient tools for certain tasks could result in performance or scalability issues.

  3. Vendor Lock-in - Difficulty adopting new technologies or switching to better alternatives becomes challenging.

Technology Stack Analysis

Java

“Strong typing” reduces runtime errors and improves maintainability. Java’s ecosystem includes security-focused libraries like OWASP’s Java Encoder Project. Keeping Java updated is essential for security.

Quarkus

Optimized for microservices, Quarkus provides built-in support for OAuth 2.0, OpenID Connect, and JWT. Regular updates and security patches remain crucial.

Vaadin

Server-side rendering helps mitigate client-side security risks like XSS attacks. Developers should follow best practices and be aware of built-in security protections.

PostgreSQL

Supports role-based access control, row-level security, and data encryption. Using prepared statements and parameterized queries protects against SQL injection.

Hashicorp Vault

Centralizes secrets management, reducing sensitive data exposure risks when proper access control and monitoring are implemented.

Keycloak

Provides robust authentication and authorization. Features like two-factor authentication and secure protocols strengthen security.

Redis

Improves performance through caching but requires proper access control, secure connections, and regular updates to prevent unauthorized access.

Docker and Kubernetes

Containerization and orchestration enhance deployment consistency and scalability when combined with container security tools and vulnerability scanning.

GitHub

Version control simplification benefits from branch protection, required status checks, and external backups.

Next Steps

The foundation being established, the next phase focuses on the first bounded context: User Access and Management, encompassing authentication, authorization, and user identity management within MyOwnTutorial. Future posts will explore designing and implementing secure user access features.