Cloud-Native Computing - Features
1.Code-Base- A single code base is designed/created for each Micro-service, stored in its own repository to be deployed to multiple environments (QA,Staging,Production).
2.Dependencies- Isolates and packages the dependencies of each Micro-service element.
3.Configuration- Moves out configuration information of the Micro-service element and externalizes through a configuration management tool outside of the code. The same deployment can propagate across environments with the correct configuration applied.
4.Backing Services-Exposes ancillary resources (Data stores,Caches,Message Brokers) via an addressable URL.Doing so decouples the resource from the application,enabling it to be interchangeable.
5.Build,Release,Run-Enforces each release in a strict separation across the Build,Release & Run stages.Tags each release with a unique ID to support the ability to roll back. Modern CI/CD systems help fulfill the principle.
6.Processes-Executes each Micro-service in its own process,isolated from other running services..Externalizes required state to a backing service such as a distributed cache or data store.
7.Port Binding-Self contains each Micro-service with its interface and functionality exposed on its own port.Doing so provides isolation from other Micro-services.
8.Concurrency-Services scale out across a large number of small identical processes (copies) as opposed to scaling-up a single large instance on the most powerful machine available.
9.Disposability-Disposes service instances favouring fast startups to increase scalability opportunities and graceful shutdowns to leave the system in a correct state.Docker containers along with an orchestrator inherently dispose service instances,favouring fast startups to increase scalability opportunities and graceful shutdowns to leave the system in a correct state.
10.Development/Production Parity-Environment across the application lifecycle as similar as possible avoiding costly shortcuts.Adoption of containers contribute to promote the same environment across the application lifecycle as similar as possible,avoiding costly shortcuts.
11.Logging-Treats logs generated by Micro-services as Event-stream.Processes logs generated by Micro-services with an event aggregator and propagate the data to data-mining management tools like Azure Monitor or Splunk and eventually long-term archival.
12.Admin Processes-Runs Administrative/Management tasks as one-off processes.Includes tasks like Data-Cleanup and pulling analytics for a report.Tools execute the Data-cleanup and pulling analytics tasks invoked from the production environment,but separately from the application.
13. API first-make everything a service-Assumes the code will be consumed by a front-end client,gateway or another service.
14.Telemetry-The workstation has deep visibility into the application and its behaviour.The design includes the collection of monitoring,domain-specific and system-health Data.
15.Authentication/Authorization-Implements identity from the start considering RBAC (Role-Based Access Control) features available in public clouds.