Services

The moment has finally come where you can deploy the actual Dalet Flex services. Whether it is backend databases (e.g. Hazelcast, Consul, MongoDB, ArangoDB, Redis ...) or actual application micro-services, all instances will be deployed through one single playbook invocation:

$ opsctl deploy -p dalet.flex.flex

The first time you run it, execution will be pretty slow, everything has to be setup, including various database clusters. You can easily expect the operation to last 30 minutes.

As any other playbook, pre and post tasks may apply, if you defined so, and the execution is fully reproducible. You can call for execution as many times as needed, deployment will be idempotent. Anything missing will be added, anything extra-added will be removed.

This is very important because:

  • Should you decide to re-order micro-services placement from one server instance to another.
  • Should you tune in services behavior and parameters.
  • Should you add custom extra services.
  • Should enable new Flex features

All of these will be handled the very same way, simply by modifying your platform Ansible variables settings and running the playbook again.

Dalet Flex comes bundled with a huge list of pre-defined and configured services, as detailed in the ansible/collections/ansible_collections/dalet/flex/vars/services.yml file from Flex collection.

This map list all possible existing services with at least:

  • Their type, influencing how they are deployed and configured.
  • The group they are deployed into (as listed in Ansible inventory file).
  • The ports they are binding and exposing their APIs to.
  • The memory settings and limits they follow.
  • The disk volumes that are to be mapped to their respective containers.

But each of them can be fine-tuned, including memory limits.