This is a copy of the guest post on the Flowdock blog. You can read the original here.
MaestroDev is a proud Flowdock customer. Since we began using it early in the year, we have greatly improved the internal visibility of development progress, and streamlined our methods of communication – reducing the number of redundant calls and emails.
The MaestroDev product development team is globally distributed, covering 4 different timezones. Our Flow is active 24 hours a day with development information and tagged updates for each other. Whether they work face to face, or remotely, Flowdock puts all of our team members on an equal footing, catching up on important discussions as they start their day, and leaving notes about progress for team members whom they may not otherwise be able to meet with immediately.
We have developed Maestro, our enterprise-grade DevOps Orchestration engine, to help enable all members of a software delivery team to be more efficient and collaborative. Maestro introduces Compositions, a reusable definition of a sequence of tools, processes and infrastructure that can be automated and interacted with. Compositions encapsulate best practices and encourage consistency across projects, reducing ramp up time and silos of expertise about infrastructure. Maestro is built to take advantage of modern public and private cloud technology to dynamically scale build, test and deployment infrastructure. This reduces friction between development, QA and operations team members and reduces the wait time for necessary infrastructure. Finally, Compositions and their execution output provide a single source of truth and history about a variety of systems, where team members can keep up to date, participate in decision points, and gather feedback from integrated tools to determine future improvements.
Integrating Flowdock and Maestro for Delivery Visibility
As you can see, Flowdock complements Maestro as a dedicated information flow for communication, notifications and actions. For this reason, we have developed Flowdock integration for Maestro and incorporated it into our delivery workflows.
Maestro has integration for a number of different tools available, and at MaestroDev some that we use are:
- JIRA: issue tracking and sprint planning
- GitHub: source control
- Jenkins: continuous integration and automated builds
- Apache Archiva: build artifact management
- Vagrant and VirtualBox: virtual machine for testing and delivery
- Puppet: infrastructure configuration management
With these tools orchestrated by Maestro and information streaming to Flowdock, we’re able to track a change from a JIRA ticket and a commit, through its deployment on a preview instance, automated functional tests and a complete candidate virtual machine image for distribution.
Our primary automated workflow looks like this:
- A commit at GitHub triggers a notification to Flowdock, and triggers a Composition to start the rest of the process
- Maestro ensures a suitable Jenkins job is executed to build the project and publish to the artifact repository.
- Flowdock is notified in the event of success (showing the published RPM version and build number) or failure (showing the full output and error that occurred)
- If it was successful, Maestro concurrently starts Compositions to update the preview instance, and run functional tests
- For the preview instance, we update the RPM version in the Puppet manifest, and trigger a Puppet agent run on the host. Puppet reports back to Flowdock when it is complete, and we know the preview instance is updated with the change
- For functional tests, a virtual machine is started with Vagrant, provisioned with Puppet, and then tests are run via Jenkins using Cucumber and Capybara. If any fail, a notification is sent to the main Flow.
- If the functional tests are successful, then a new virtual machine is produced and a notification sent to the main Flow.
Of course, we have many other such Compositions for sequences including releases, building and deploying Puppet modules, publishing promoted VMs to Amazon S3, and so on – all similarly integrated with Flowdock.
If you’re interested in trying Maestro out for yourself, contact us and we’ll set you up with an evaluation system and several similar pre-configured examples.
Flowdock has become the first thing I check in the morning, and one of the most useful tools I turn to throughout the day to find out what is happening, discuss a solution with a colleague, or just share a link to something fun and interesting. Our thanks go to the Flowdock team for a great product!
Who is John Galt?
As DevOps continues to be defined and debated, what is undeniable is that change is hard — as John Galt tried to show her, and as Dagny Taggart eventually conceded in Ayn Rand’s Atlas Shrugged — and especially so for large and distributed enterprise teams. DevOps evangelists are passionate about benefits and critics challenge origins, but the end of the DevOps discussion is the same; if we agree that more communication between developers and IT operations produces better software, then the discussion should focus on “How?”
As MaestroDev works with our customers and prospects, one consistent request of both our consulting work and our Maestro product is how to facilitate the best practices that are discussed in blogs, lunches, and sprints. So there is the question; How do we implement the DevOps ideas we have?
The answer is what we call DevOps Orchestration. Automating tasks and tools that span the DevOps lifecycle are a first step. An extension of Continuous Integration and Delivery, it describes the automation of tasks insofar as they are set up the first time. But DevOps Orchestration also prescribes the “How” of daily interaction between groups. What is needed is a common location and mechanism to communicate and share the very best practices that DevOps promotes, and their unique details for each task, team, and project.
Maestro excels at DevOps Orchestration by providing a central location for this bi-directional communication and abstracting the logic away from the tools themselves with a tool-agnostic task-based mechanism which captures the “language” of DevOps interactions between developer, testing, and operations groups, and even allows manager approvals to interact with the automated processes. DevOps Orchestration accelerates the pace of change, fosters best practices, and removes friction from the best intentions of teams who, ultimately, agree on the same end-goals.
Maestro DevOps Orchestration automates your existing installed toolset from source code management through build, test, deploy, and environment management — all from a single screen. Ease-of-use gains alone promote DevOps adoption by making it easier to capture task details of all types in a single location for the author, but also because all other users know there is a single place to find / review / change task definitions and configurations. Great things can start from a single place.