12. qainit step 2
First, qainit call Github
An internal dependency resolution starts from the speci
f
ic
microservice requested to collect all other microservices needed
13. qainit step 2
Second, qainit call Kubernetes api
An ephemeral namespace is created to host all required microservices:
common resources (databases, metrics collector, etc) are deployed inside it
14. Qainit use DroneCI Api to promote speci
f
ic build of all microservices requested:
the CI/CD completes the deployment in k8s cluster using helm and a common chart
qainit step 3
15. A tool called external-dns provide the CNAME records for each microservice that
needs it inside a dedicated zone inside Cloud
f
lare
qa created
16. What about the solution?
• qainit is written in Elixir, leverages Commanded and adopt CQRS
paradigm to keep tracks of the status of resources (qa namespaces,
microservices, etc)
Some more details
17. What about the solution?
• qainit is written in Elixir, leverages Commanded and adopt CQRS
paradigm to keep tracks of the status of resources (qa namespaces,
microservices, etc)
• the qa created use statefull sets and AWS speci
f
ic drivers (network and
volumes plugins) to preserve data across days
Some more details
18. What about the solution?
• qainit is written in Elixir, leverages Commanded and adopt CQRS
paradigm to keep tracks of the status of resources (qa namespaces,
microservices, etc)
• the qa created use statefull sets and AWS speci
f
ic drivers (network and
volumes plugins) to preserve data across days
• the solution is fully scalable - thus, qa are frozen each day by scaling to
zero the replicas, and can be defrost by developers using our custom cli,
providing almost zero costs
Some more details