Approximately 10 years ago at the OSSGTP group, I met a guy, Benjamin Mestrallet, who had just created eXo Portal, an implementation of the first Java Portlet Specification (JSR 168). In 2009, I joined his company, eXo, to help to improve the quality of deliveries and the productivity of teams.
Since I joined the company the product has evolved a lot. When I arrived, eXo Portal and Jboss Portal were just getting married to become GateIn (my first contribution was helping on its first release announced at JBoss World 2009). On top of our former products (CMS, DMS, Forum …) we built an integrated solution: eXo Platform.
From version 3.x to 4.x we greatly improved the user experience, the product performance and our ability to deliver more regularly, with an increasing level of quality. Recently, we took a step further, and announced our online service eXo Cloud to complete our existing on-premise offer, which enables us to continuously deliver our platform.
What you probably didn’t see is how under the covers, our processes, tools and methods also evolved to support all these changes.
I’m one of the actors of these changes and I can say that it’s not an easy activity. Sometimes people may imagine you as a super-hero, called by his coworkers to solve some problems in the company, but often at the end of the day I’m just this tired guy trying all day to juggle with many constraints to find the best compromise.
I would like to share with you this experience. Welcome, you are in DevOps land. We are about to discuss development, quality assurance, and technology operations.
When I arrived in 2009, my former coworker Dimitri Baeli was initiating our teams to agile practices starting with SCRUM for development teams and KANBAN for support or transversal teams like OPs.
On my side, I supported the process by setting up a software factory (forge) with all required services for our community:
- all sources are now hosted on a DVCS, Git using Github,
- a CI server, based on Jenkins is processing all automated tasks,
- all binaries are automatically deployed into our repositories based on Sonatype Nexus to be consumed by various deployment services for QA validations and production deployments,
- quality indicators of all projects are pushed to our SonarQube instance to let all contributors review their errors,
- teams are able to manage code reviews in our Atlassian Fisheye/Crucible instance,
- and everything is tracked in Jira, using Jira Agile dashboards for Scrum and Kanban, as our community is scattered all over the world (which makes it difficult to manage real post-its).
Thereafter, with Frédéric Drouet, for QA purposes (functional, performances …) and now to operate our live services, I contributed to our continuous delivery automation using Jenkins but also some more recent technologies like puppet, a configuration management tool.
(image credits to collab.net – http://www.collab.net/solutions/devops)
All these subjects gave us a lot of work. Sometimes we succeeded and sometimes we failed. In upcoming blog posts I will unveil what we did and I’ll share our experience. Next time we’ll discuss sources management (version control systems, workflows, code review …). I hope you’ll appreciate them.