Upload
gene-kim
View
175
Download
0
Embed Size (px)
Citation preview
electric-cloud.com
#DOES16
DSL at ScaleSource-Code Based Orchestration
Greg Maxey, Solutions Architect, Electric CloudLaurent Rochette, Professional Services Architect, Electric Cloud
electric-cloud.com
#DOES16
Agenda
• Introduction• State of the art before DSL• Onboarding at a MASSIVE scale with DSL
o Mini case study at Financial Services company• Works in progress and what's next with DSL
electric-cloud.com
#DOES16
Introduction
• Last year introduced the ElectricFlow DSL at DOES 2015o 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.
electric-cloud.com
#DOES16
State of the art before ElectricFlow DSL
• Create parameterized ElectricFlow objects with UI for reuseo 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
electric-cloud.com
#DOES16
Mini case study at Financial Services company
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
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
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
electric-cloud.com
#DOES16
Sample File structure
Projects
Release procedures
installProgram
runScript
Setup
procedures
createDeliveryManifest
createRelease
createRelease.groovy
steps
step1.pl
step2.sh
workflows
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
electric-cloud.com
#DOES16
Electric Flow
Setup Project
Onboarding and Refresh
User Input Web UI
Release InfraApp
Release Project
JSON
Run ProcedureNew App Project
DSL+JSON
App/Release/Env Properties
Refresh App
Refresh Release
DSL
DSL
App & Env Models
Pipeline & Release Models
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
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
electric-cloud.com
#DOES16
DSL, give it a try!
electric-cloud.com
#DOES16
What we’re working on to make DSL better
• Toggle between GUI and DSL editor – New!
• Testing framework
• EC-Admin
• PluginLiteo ReleaseDemoo EC-Supporto EF-Utilities
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
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
electric-cloud.com
#DOES16
Thank you!