Unveiling the Semaphore Architecture: How It Works Under the Hood
Blog post from Semaphore
Semaphore is a comprehensive CI/CD platform designed to enhance software delivery by automating builds, tests, and deployments, making it suitable for developers and teams of any size. Its architecture is a sophisticated mix of over 30 microservices, using Elixir for handling concurrency, Go for performance-critical services, and JavaScript & HTML for the UI layer. Semaphore employs HTTP for external interactions and gRPC for fast internal messaging, with RabbitMQ for background tasks, while Kubernetes, PostgreSQL, and Redis ensure scalability and reliability. The platform manages CI/CD workflows by processing code commits through a series of orchestrated services, such as the Plumber Service for pipeline processing and the Zebra Service for job execution. It integrates with tools like Slack and GitHub for notifications and supports user interaction through a secure UI and API, enforced by Keycloak authentication and RBAC for permissions. As an open-source project, Semaphore invites community contributions to continuously evolve and improve its capabilities in software delivery.