<<Projects
An orchestration service: modularization and framework change
- Introduction:
- A POC project at first
- The service began to be adopted by other functional teams, leading to the involvement of business logic.
- Issue 1: started to face the challenge of mixing orchestration foundation logic with business logic.
- To address this, I decoupled the code and modularized it, establishing patterns to make it easier for functional teams to build their feature work.
- Issue 2: using a reactor web framework that does not have strong ecosystem as Spring. There is not much resource while try to do a new feature.
- change to use Spring Webflux which have more resources.
- along the way, also do the integration between Jenkins and Postman CLI, Newman, to be able to automate Postman collection tests.
A service that uses files as user configuration
- Introduction:
- 2 services use files as user configuration, one file represent one user. Service A manages the files and the other service B use these user configuration files.
- Every change on user config on service A need to deploy to the service B server which has multiple nodes. It could take minutes before all nodes get update.
- File makes the service difficult to scaling.
- Stages of improvement:
- Service A uses Kafka to notify the service B, the message contains configuration itself, allowing Service B to cache it in memory. This flow allows Service B almost get update immediately while file deployment occurs in the background as a backup.
- Service A starts to write configuration into DynamoDB and provided API for service B to call for fetching configuration. Kafka still play role for notifying service B about the configuration update and then fetch the updated configuration from service A via API.
- Introduction:
- to save time to build SDK/Connector from API
- Build a a API document(OpenAPI3.0) merger to read all API document that needed for SDK and merge all into one document.
- Integration with GitHub to have preview/release cycle of merged document.
- Customize Swagger Codegen to read the release version of merged document and generate code. The team can build SDK from the generated code.