t last year’s DOES conference, we introduced the new Domain Specific Language (DSL) for Electric Flow and painted a vision for how it could revolutionize application release automation (ARA) for very large enterprise implementations.
We are pleased to share with you our experiences and learnings from such a large scale implementation in a financial services company that we’ve been working on this past year. This is a very large implementation—hundreds of ‘platforms’, each containing hundreds of application components each targeting hundreds of ‘device types’, that is, thousands of components distributed across tens of thousands of end points in data centers across the world.
Because of regulatory and quality concerns, complex multi-environment stage testing and promotion systems with clear separation of duties must be enforced. While Electric Flow provided the core functionality to achieve these goals, there was a considerable amount of customization required to support legacy applications, tools and processes. All of the custom work done by the Electric Cloud professional services teams was done in DSL, that is, source code first. Customizations are maintained in a source control system and applied to the various staging environments through automated script execution managed by Electric Flow. While the Electric Flow UI was not used to author content, it was used to verify implementation and provide a convenient ways for the client to monitor progress of their application delivery. The result was a highly maintainable and scalable implementation that could be customized and adjusted on a moment’s notice. Indeed, the project has been managed in a lean agile manner with three week sprints.
3. electric-cloud.com
#DOES16
Introduction
• Last year introduced the ElectricFlow DSL at DOES 2015
o EVERYTHING you can do in the GUI, API, CLI you can do in DSL plus
enables data-driven implementations
• Saw great adoption among our customers for large scale
implementation
• Provides huge improvements over former approaches for
onboarding and process-maintenance for complex orgs.
4. electric-cloud.com
#DOES16
State of the art before ElectricFlow DSL
• Create parameterized ElectricFlow objects with UI for reuse
o It was possible to do automated authoring with ec-perl, though that
was generally reserved for "synthetic" or "meta" coding
• Project exports
• Plugins for versioning and portability
6. electric-cloud.com
#DOES16
Challenge
• Huge number of existing applications (thousands!)
• Server-type orientation to infrastructure
• Wide range of delivery processes and technology stacks (.NET,
Java, etc.)
• Many new applications in the pipeline
• Three week release cycle
• Strict Maintenance Windows and regulatory/compliance guidelines
7. electric-cloud.com
#DOES16
Requirements
• On-board existing applications
• On-board new teams
• Accommodate new applications
• Cover 80% with model
• Strict and detailed user/group access controls
• Separate ElectricFlow server clusters for development, test and
production
8. electric-cloud.com
#DOES16
Approach
• Customer created a self-service web portal to enable product
owners to onboard applications
• Portal accepts application, infrastructure and releases details
• Portal sends configuration description to ElectricFlow
• ElectricFlow generates custom objects based on configuration
• ElectricFlow procedures used to generate these objects
• DSL used to manage all access controls
• All (except credentials) managed in Source Control
10. electric-cloud.com
#DOES16
Shared Source Code based Orchestration
• 1 Project for each application group
• Application model snapshot'd to allow evolution without impact
• Version manifest managed in Property Sheet to allow simple run of
pipeline
• Release and Applications data stored to properties
11. electric-cloud.com
#DOES16
Electric Flow
Setup Project
Onboarding and Refresh
User Input Web UI
Release InfraApp
Release Project
JSON
Run Procedure
New App Project
DSL+JSON App/Release/Env
Properties
Refresh App
Refresh
Release
DSL
DSL
App & Env
Models
Pipeline &
Release Models
12. electric-cloud.com
#DOES16
Advantages realized by DSL
• Source controlled versioning of orchestration
• Orchestration reuse
• Easily support incremental changes
• Self documenting
• Many people can work on the same process design through code
merging
• IDE development more efficient for developers
• Data-driven model creation
• Models can have group-specific values hard-coded, making for a
cleaner end-user experience
13. electric-cloud.com
#DOES16
Business Impact of DSL
• Enables self-service while maintaining compliance
• Gives organizations control over processes used for SW
delivery
• Enforce separation of duty
• Consolidation and standardization of pipeline and
practices saves management overhead
• Enable less skilled operators to execute advanced
processes and compliance checks
15. electric-cloud.com
#DOES16
What we’re working on to make DSL better
• Toggle between GUI and DSL editor – New!
• Testing framework
• EC-Admin
• PluginLite
o ReleaseDemo
o EC-Support
o EF-Utilities
16. electric-cloud.com
#DOES16
Resources
• DSL IDE Shipped with Electric Flow 6.5: https://github.com/electric-
cloud/EC-DSLIDE
• PluginLite: https://github.com/electric-cloud/PluginLite
• Data-driven Release Example: https://github.com/electric-
cloud/ReleaseDemoPlugin
• DSL Samples: https://github.com/electric-cloud/DSL-Samples
17. electric-cloud.com
#DOES16
Technical details to keep in mind with DSL
• Everything read from the server, cluster challenge
• Debugging: easier in 7.0 with println support
• Limited feedback during evaluation
• Deletions don't occur automatically (idempotent)
• Careful with deleting application, can lose inventory and snapshot
data