SmoothGlue Architecture
Introduction
SmoothGlue's architecture is meticulously crafted to cater to modern software development needs, spanning from cloud infrastructure and orchestration with Kubernetes to seamless application management. This deep dive aims to unpack the layers and components that constitute the SmoothGlue platform.
Cloud & Infrastructure Layer
Cloud Integration
- Terraform: As an Infrastructure as Code (IaC) tool, Terraform provisions and manages infrastructure on many cloud platforms, but predominantly AWS.
- Cloud Platforms: SmoothGlue is designed to be cloud-agnostic, with native support for major cloud service providers, such as AWS, GCP, and Azure. This ensures scalability, resilience, and flexibility in deployment and management.
Kubernetes Orchestration
Kubernetes acts as the heart of the SmoothGlue platform, providing a container orchestration solution that manages, scales, and automates container deployments.
- Multiple Clusters: SmoothGlue employs multiple Kubernetes clusters to segregate the Developer Build Environment from Run Environments. This separation ensures optimized resource allocation and workflow management.
- Service Mesh with Istio: Istio enhances the capabilities of Kubernetes by providing a comprehensive service mesh solution. It manages service-to-service communication, ensuring load balancing, fault tolerance, and more.
- Security & Compliance: With tools like OPA Gatekeeper or Kyverno, Kubernetes clusters enforce policies and maintain security standards across deployments.
Application Layer
The application layer integrates various tools and services, ensuring a holistic development, deployment, and monitoring experience.
Developer Build Environment
- Collaborative Tools: Integrations with GitLab for code repositories, Jira for issue tracking, Confluence for documentation, and Mattermost for team chat
- Continuous Integration (CI) & Automation: Incorporates GitLab Runner for CI and the SmoothGlue Console for organizational automation
- Security & Authentication: Centralized authentication and security via Keycloak
Run Environment
- Argo CD: Manages Continuous Deployment for applications, ensuring they transition smoothly through various phases
- AuthService: Integrates as an OpenID Connect (OIDC) client, facilitating secure access management
Core Components
Beneath both the Developer Build Environment and Run Environment, the SmoothGlue Core manages essential backend operations, ensuring consistent performance, security, and efficiency across the board.
- Monitoring, Logging, & Tracing: Tools, such as Grafana, Kiali, Promtail, and either Jaeger or Tempo, offer real-time insights and diagnostics.
- Runtime Security: Solutions, including Twistlock or Neuvector, secure containers during runtime, safeguarding against threats.
- Certificate Management: (Optional component) Dynamically issue and manage certificates to simplify operations.
Diagrams
The following basic diagrams display how all the pieces come together.
Intra-Cluster Relationships
The diagram below shows the relationship of a Run Cluster with the Build Cluster. Administrators are responsible for the lifecycle of the Build Cluster and the Run Cluster. Developers utilize the Build Cluster to develop Mission Applications that get deployed on the Run Cluster. End users access the Mission Applications that are hosted on the Run Cluster.
Run Operational View
The diagram below shows a more in-depth look into how a Run operates. Administrators manage the lifecycle of the Run and are responsible for making sure the components of Big Bang are updated and running. Mission Application Developers use Argo CD to deploy the applications from the Build Cluster onto the Run Clusters.
Run View
The diagram below shows the deployment of a Run by an Administrator. An Administrator will be responsible for the lifecycle of the Run so that Mission Application Developers are able to deploy their applications onto the Run Cluster.
Conclusion
SmoothGlue's architecture embodies the principles of modern software development: modular design, scalability, security, and resilience. By orchestrating components across the cloud, Kubernetes, and application layers, SmoothGlue delivers a unified platform tailored for end-to-end software development and deployment.