ODC's development Platform is composed by multiple services, each one being responsible for specific functions which facilitate the building and deployment of applications.
All these services benefit from a microservices approach with a REST API interface.
All users, namely developers, DevOps, engineers and architects interact with these services indirectly, through ODC Studio and ODC Portal.
To have an idea of the overall high-level architecture of the development Platform:
In this diagram, it can be seen that when ODC Studio or ODC Portal send HTTPS requests to a service, they are validated if the user is authenticated and authorized and then it's the Load Balancer who is responsible for routing all requests to the respective services, which are running in a Kubernetes cluster (AWS's EKS).
As an example of one of these services, depicted in the image below, is the Build Service. When a developer clicks the 1-Click Publish button in ODC Studio, the Build Service receives the respective model (OML project) from the application and compiles it into a deployable app.
This request accesses a secure endpoint in the Build Service and replies back the response, when completes.
The development Platform is available at https://<customer-name>.outsystems.dev
Platform cluster
The Platform cluster is a Kubernetes cluster (EKS) and each Platform service is packaged in a container.
Auto-scaling
To avoid performance degradation of any developer Platform service due to concurrent usage, as the it can be the case of the mentioned Build Service, OutSystems implemented scalability in each of the existing developer Platform services.
The auto scale controller continuosly monitors how each running service is using CPU and RAM against the cluster's compute capacity allocated and allocates aditional capacity, if the CPU and RAM usage goes beyond a defined threshold.
These adjustments by the auto scale controller are made in real time and no user interaction is required. Each isolated Platform cluster's takes its resources from the overall capacity of a multi-tenant pool.
The following diagram shows how auto scalling works inside the EKS Platform cluster:
Databases and data stores
Each service running in the development Platform cluster makes calls to their respective databases and data stores, as described in the following table:
Data stored | Underlying AWS Service Used | Service Description |
App revisions and dependency information | Amazon Aurora | A PostgreSQL compatible relational database built for cloud environments |
Current and historic app revisions, in the form of OML projects, stored as blob data | S3 | An object storage service offering industry leading scalability, data availability, security and performance |
Configuration and metadata from the Platform Build Service | DynamoDB | A fully managed serverless key-value NoSQL databse designed to run high-performance apps at any scale |
Current and historic app container images | Elastic Container Registry (ECR) | A fully managed Docker container registry that makes it easy to store, share and deploy container images |
Comments
0 comments
Please sign in to leave a comment.