Project summary
The customer’s platform is a set of microservices deployed in the cloud. Platform orchestration is implemented by Kubernetes (K8s). JazzTeam specialists had to improve the performance of microservices in Kubernetes by adding additional functionality for health checking, as well as decomposing microservices into smaller parts. Among other things, it was necessary to implement software for the management of data in a hidden form.
Main objectives of the project
Development of tools for testing applications/microservices in K8s containers
The main goal was to create the possibility to test the performance of K8s containers through the implementation of Liveness, Readiness and Startup Probes for Health Checks.
Main tasks:
- Conducting R&D on Health Checks customization options for the microservice architecture deployed in Kubernetes (K8s) and creating MVP.
- Building a library kernel architecture (based on MVP results) that allows to configure Health Checks in microservices.
- Applying this library to all microservices.
- Development of new microservices and support of existing ones.
- Execution of project documentation.
- Communication with the customer to clarify the requirements.
Managing certificates and passwords for system services
The main goal is to avoid storing platform passwords in plain text format. A dynamic structure should be used as a password repository, and it should be possible to encrypt passwords and grant access to these passwords to certain services.
Main tasks:
- Conducting R&D and selecting the appropriate password storage solution, such as Vault, Keywhiz, etc.
- Creating the Proof of Concept for each of the solutions, comparative analysis of the solutions.
- MVP development based on the selected solution.
- Refinement of MVP to final product.
JazzTeam responsibilities:
- Conducting large-scale R&D with subsequent implementation of research results.
- Refactoring the code of the existing solution.
- Creating the Proof of Concept for each solution.
- Execution of documentation for the selected solution.
Technologies used
Java experience: Java 8,11; Kotlin. Spring Boot, Spring Core, Spring Data JPA, Spring Redis, Spring Kafka, Spring Actuator, Hibernate, Log4j, JDBC.
Databases: PostgreSQL, Redis.
Infrastructure: Intellij Idea IDE, Maven, Git.
Testing tools: JUnit, Mockito.
Data exchange protocols: rest, gRPC/Protobuf.
Other technologies: Kafka, Netty, Kubernetes (K8s), Helm, Vault.
Project features
- At the start of the project, the task was to migrate the services from Spring 1.5.x to 2.6.x, in order to speed up and simplify the process of creating Java applications.
- It was necessary to migrate Junit4 to Junit5 to comply with Spring 2.6.x.
- Continuous improvement of the project on the basis of R&D, taking into account the application of the latest developments and libraries.
Project results
- Proof of Concept, which formed the basis for the further development of the project, was completed and protected.
- We set up Health Checks for the microservice architecture.
- In parallel with the R&D process, the code of the existing solution was refactored.
- Based on the solutions, the customer was able to develop the optimal vector of project development.
Company’s achievements on the project
- Ensured smooth operation of the application in K8s through the introduction of Health Checks.
- Achieved goals in the process of working with constantly changing requirements.
- The customer is satisfied with the result.