Chenile - Deployment Model
Edit me

Chenile Typical Deployment Architecture

Chenile supports and advocates a few infra components such as API Gateway and API registry. Besides these, individual services will be hosted separately. Chenile recommends the usage of recommended infra practices to ensure scalability.

Service Recommendations

Chenile recommends that several cohesive services be packaged together into a “mini monolith” which is a unit for deployment. The advantages of having a separate mini monolith (as opposed to hosting every service separately) are:

  • Reduced infra footprint
  • Architectural simplicity & easier maintenance
  • Shared approach to service policies
  • Separation of deployment from development.

Core Chenile Features (to reduce number of deployments)

Chenile provides the following strategies and features to reason about deployments in a de-coupled fashion:

Library Management

Chenile recommends that a service must be implemented by separate libraries. Multiple service libraries will be deployed together in a single mini monolith. The library versions must be managed together.

Location Transparency

Services must not assume the location of their dependencies. For example, if service1 depends on service2 then service1 code must not assume the location of service2. It might be possible that service2 is colocated with service1 or it might be hosted separately. Service1 code must work both ways. Chenile Proxy facilitate this strategy

Deployment Cohesiveness

Deployments need to be cohesive i.e. associated services must be packaged together whilst unrelated services must be separated out into their own deployments. Here are some criteria to separate the services out into their own deployments:

Velocity of Change

If services change at a different pace then it is better to separate out the deployments so that relatively stable services are not affected and don’t have to be tested for every change.

Scalability

If services have different scalability needs, then they need to be separated out. Scalability dictates the infrastructure needs. If infra needs for services are not the same, then it will make sense to separate out the deployments.

Domains

Non-Cohesive services across different domains must be separately hosted.

Org Structure

Conway’s Law states that the artifacts created by an organization mirror the org structure. Accordingly, if services belong to different orgs they must be hosted separately. This facilitates org autononomy.

Deployment Architecture