Now Try It Yourself
ElectricFlow is a highly scalable product for automating software development and delivery processes. This tutorial will walk you through the high-level architecture of ElectricFlow.
At its core, ElectricFlow is a platform that contains the building blocks used to automate diverse software delivery processes.
- This enterprise-grade platform provides a highly available configuration, ensuring minimum system downtime for the critical software delivery engine. The application server is both vertically and horizontally scalable, handling the largest workloads in the industry. ElectricFlow is used to service thousands of end-users, and deploy software across thousands of end-points.
- Software companies may need to enforce separation of duties and pass compliance audits. In these environments, it is critical to both control and visualize the path of every artifact that is built, tested, and deployed. To orchestrate this work in an auditable and secure manner, ElectricFlow implements multiple security features including fine-grained access control, anti-spoofing, user impersonation, and agent zones.
- ElectricFlow enables automated deployments to endpoints across a wide variety of platforms through a combination of agent and agentless architectures. Native agent support is available on Windows, Linux, Mac OSX, HP-UX, and Solaris. An SSH-based proxy agent is available for all other flavors of UNIX and PAAS environments. ElectricFlow provides a full-featured RESTful API. The domain specific language, or DSL, is used to define automation processes as code, a powerful mechanism that minimizes maintenance and ensures repeatability. The software development kit, or SDK, may be used to extend the UI with company-specific dashboards and panels.
Flexible building blocks are critical to service the unique needs of every software organization.
- Procedures are contiguous blocks of steps. A step is the smallest unit of work in ElectricFlow – it defines what command to run, on which resource to run, how to handle errors, and so on.
- Workflows are state-transition models that provide looping, manual transitions, and a higher level of visibility.
- Projects are organizational objects that provide logical groupings and separation of duties between teams, applications, and so on.
- Resources are pointers to virtual or physical hosts that are sitting on-premise, in the cloud, or a combination of the two.
- Jobs are instances of procedures, providing a record of exactly what ran and where, after variables and data-driven processes are expanded at runtime.
- Reporting on automation is critical to provide real-time insight into the software delivery process, and ElectricFlow provides powerful capabilities to publish out-of-the-box and custom reports.
- ElectricFlow comes with a built-in artifact repository that may be used to publish, retrieve, and report on all artifacts that are built, tested, and deployed. Integration with third-party repositories is also provided out of the box.
ElectricFlow’s shared models and practices sit on top of these powerful building blocks, and enable users to automate common use cases with minimal effort. They encourage reuse by leveraging existing work, thus saving both the time and cost of management.
- Builds and test processes are easily defined for development use cases including continuous integration.
- Applications are modeled by providing information about their components and defining the processes that orchestrate the deployment of these components.
- Environments are modeled using resources that are statically defined, dynamically spun up at deployment time, or a combination of both.
- Pipelines are used to define the stages of software delivery, the tasks associated with each stage, and the gates required to move from each stage to the next.
- Releases are collections of applications that are deployed and tested together. They are used to define the dependencies between these applications as well as the matrix of environments to which they will be deployed.
Sitting on top of the core platform are use cases that serve as user-friendly entry-points into the system. Each of these use cases provides a purpose-built object model and user experience.
- Development organizations use the build/test capabilities to serve their continuous integration needs. Users may set up a self-service model for rapidly onboarding development teams.
- The ElectricFlow deployment use case targets application release automation, or ARA. Applications and environments are modeled, and users perform single-click deployments that are both consistent and easy to debug.
- Pipelines and Releases are used to provide high-level visibility into the stages and tasks that compose end-to-end software delivery. Depending on their needs, users may define short-lived continuous delivery pipelines, or long-lived release pipelines.
Let’s take a look at the high-level system architecture for ElectricFlow.
- The DevOps Automation Platform is a Jetty-based application server, the brains of the operation. It may be configured to run multiple servers in a cluster behind a load balancer, thus providing high availability while also scaling the system horizontally. The platform stores data persistently in an Oracle, SQL Server, or MySQL database.
- Processes defined in ElectricFlow are run on agent hosts. Lightweight agents are installed on build, test, and deployment end-points. Agents may be grouped into zones split across geographies or security boundaries, thus enabling deployments to globally distributed data centers. ElectricFlow natively supports deployments to hosted clouds like AWS EC2 and platform-as-a-service offerings like Pivotal CloudFoundry. Commands are run in directories created within centrally managed workspaces. Any number of workspaces may be defined in ElectricFlow, pointing to network share and local file systems.
- The ElectricFlow API is available via a RESTful interface, JSON over HTTP, or XML over HTTP.
- The web interface is hosted in an Apache web server. This interface provides a tailor-made user experience for each use case addressed by the ElectricFlow solution. Multiple web servers may point to a single automation platform, a configuration that is typical in geographically distributed environments.
- The domain specific language is used to define automation processes as code. The software development kit may be used to extend the web interface with organization-specific dashboards and panels.
- ElectricFlow users may access the system via the web interface if they prefer to visualize their processes, the DSL if they prefer to define their processes as code, or use the API directly. Full API access is available with each of these methods.
- ElectricFlow comes with a built-in artifact repository that may be used to publish, retrieve, and report on all artifacts that are built, tested, and deployed. Similar to web servers, multiple repository servers may be configured for geographically distributed environments.
This tutorial provided a high-level overview of the ElectricFlow platform, use cases, and architecture. Feel free to contact Electric Cloud if you have any questions. Thank you!
Use ElectricFlow to automate your Build/Test (CI), Deploy (ARA), and Pipeline and Release Management use cases.
To learn more, go to learn.electric-cloud.com.