Overall Concepts
Deployment
Dictybase deployment strategy is inspired by twelve factor app methodology. Our strategy primarily follows these concepts..
- Declarative format for automation, such as Dockerfile.
- Maximum portability across OS, for example both
docker
andkubernetes
could run in all major OS. - Suitable for deployment on cloud platforms.
- Minimum divergence between development and production platforms.
- Scaling of applications.
Strategy
For deploying, all dictyBase softwares are packaged using Docker. The packaged (containerized) application are generally available publicly from the dictyBase repository of Docker Hub. Each repository in the Docker Hub will be linked to its respective source code in GitHub. The GitHub source code and docker hub repository are linked and the application packages are automatically built from the source code. The package applications (containerized applcations) are then deployed to Kubernetes cluster (manages lifecycle of containerized applications). For development platform of kubernetes, we use Minikube and for production we use Google Container Engine.
Concept
Application deployments are managed by grouping them into virtual application stack where every stack provides a particular service (shares similar functions). In other words, each stack can also be considered as multi tiered applications.* Every stack is generally consists of the following core applications
- Backend: Application that provide storage, for example, postgresql database application.
- API server/middleware/microservice: Application that provides HTTP(and
grpc) endpoints to access data from the backend based on an specified
API
. - Frontend: A ReactJS based application that runs
in a web browser and fetches data through
API server
.
So, overall a basic stack is organized as
frontend <--> api server <---> backend.
Now, there are other applications that might be part of some stacks. These are generally management applications to run one-off tasks(runs to completion).
- Schema loader: Application that loads/manage database schema in the backend.
- Data generator: Generate or pre-process raw data to make it compatible for loading. Unless the data is embeddable, it should be a S3(or compatible) bucket. For our case we are using minio for production and development.
- Data loader: Bootstrap the backend with initial data. Unless the data is embeddable, it should be made available from a S3(or compatible) bucket. For our case we are using minio for production and development.The generated data is generally loaded in batch.
Common checklist and steps for installing charts
- Make sure you have added the correct repositories. If not, add them with
helm repo add
command.
helm repo list
- Check for available dictybase charts
helm search -l dicty
- Update repositories
helm repo update
Always add the
--namespace dictybase
parameters for deploying every chart, otherwise they might not work as expected.At least aware about different configuration parameters and their default values(if any) of the chart you are deploying. The
README.md
of every accompanying chart is available here. If noREADME.md
is available, read through thevalues.yaml
file, it is generally more or less annotated for understanding.In addition, use
helm inspect <chart-name>
to check for all configurable options.Configuration parameters could be set either from command line
--set something=xxxx
or through a yaml file or a combination of both.