{"id":6469,"date":"2014-02-11T05:55:07","date_gmt":"2014-02-11T13:55:07","guid":{"rendered":"http:\/\/localhost\/exoblog\/?p=6469"},"modified":"2023-06-05T16:46:43","modified_gmt":"2023-06-05T14:46:43","slug":"devops-dark-knight-shadows","status":"publish","type":"post","link":"https:\/\/www.exoplatform.com\/blog\/devops-dark-knight-shadows\/","title":{"rendered":"Devops Dark Knight, Out of the Shadows"},"content":{"rendered":"<p>Approximately 10 years ago at the <a href=\"http:\/\/www.ossgtp.org\" target=\"_blank\" rel=\"noopener\" class=\"broken_link\">OSSGTP<\/a> group, I met a guy, <a href=\"https:\/\/community.exoplatform.com\/portal\/intranet\/profile\/benjmestrallet\" target=\"_blank\" rel=\"noopener\">Benjamin Mestrallet<\/a>, who had just created eXo Portal, an implementation of the first Java Portlet Specification (<a href=\"https:\/\/jcp.org\/en\/jsr\/detail?id=168\" target=\"_blank\" rel=\"noopener\">JSR 168<\/a>). In 2009, I joined his company, eXo, to help to improve the quality of deliveries and the productivity of teams.<\/p>\n<p><a href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/01-OSS-GTP.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-6470\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/01-OSS-GTP.png\" alt=\"01-OSS-GTP\" width=\"200\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/01-OSS-GTP.png 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/01-OSS-GTP-200x67.png 200w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/01-OSS-GTP-100x33.png 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/01-OSS-GTP-70x23.png 70w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>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 <a href=\"http:\/\/www.jboss.org\/gatein\" target=\"_blank\" rel=\"noopener\">GateIn<\/a> (my first contribution was helping on its first release announced at <a href=\"https:\/\/community.jboss.org\/en\/gatein\/blog\/2009\/09\/03\/gatein-300-beta-1-has-just-been-released\" target=\"_blank\" rel=\"noopener\">JBoss World 2009<\/a>). On top of our former products (CMS, DMS, Forum \u2026) we built an integrated solution: <a href=\"https:\/\/www.exoplatform.com\/product-offer\/\" target=\"_blank\" rel=\"noopener\">eXo Platform<\/a>.<\/p>\n<p><!--more--><\/p>\n<p><a href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/02-Platform-Architecture.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-6471\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/02-Platform-Architecture.jpg\" alt=\"02-Platform-Architecture\" width=\"400\"><\/a><\/p>\n<p>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 <a href=\"https:\/\/www.exoplatform.com\" target=\"_blank\" rel=\"noopener\">eXo Cloud<\/a> to complete our existing on-premise offer, which enables us to continuously deliver our platform.<\/p>\n<p>What you probably didn\u2019t see is how under the covers, our <b>processes<\/b>, <b>tools<\/b> and <b>methods<\/b> also evolved to support all these changes.<\/p>\n<p>I\u2019m one of the actors of these changes and I can say that it\u2019s 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\u2019m just this tired guy trying all day to juggle with many constraints to find the best compromise.<\/p>\n<table border=\"0\" cellspacing=\"5\">\n<tbody>\n<tr>\n<td><a href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-6472\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight.jpg\" alt=\"03-Dark-Knight\" width=\"300\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight.jpg 1600w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-300x188.jpg 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-1024x640.jpg 1024w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-768x480.jpg 768w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-1536x960.jpg 1536w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-1250x781.jpg 1250w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-720x450.jpg 720w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-500x313.jpg 500w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-360x225.jpg 360w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-200x125.jpg 200w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-100x63.jpg 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/03-Dark-Knight-48x30.jpg 48w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><\/a><\/td>\n<td><a href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/04-Arnaud.jpg\"><img decoding=\"async\" class=\"aligncenter size-medium wp-image-6473\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/04-Arnaud.jpg\" alt=\"04-Arnaud\" width=\"300\"><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>I would like to share with you this experience. Welcome, you are in <a href=\"http:\/\/en.wikipedia.org\/wiki\/DevOps\" target=\"_blank\" rel=\"noopener\"><b><i>DevOps<\/i><\/b><\/a><b><i> <\/i><\/b><i>land<\/i>. We are about to discuss <b>development<\/b>, <b>quality assurance<\/b>, and <b>technology operations<\/b>.<\/p>\n<p><a href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/05-Devops.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-6474\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/05-Devops.png\" alt=\"05-Devops\" width=\"242\" height=\"229\"><\/a><\/p>\n<p>When I arrived in 2009, my former coworker <a href=\"https:\/\/twitter.com\/dbaeli\" target=\"_blank\" rel=\"noopener\">Dimitri Baeli<\/a> was initiating our teams to agile practices starting with <i>SCRUM<\/i> for development teams and <i>KANBAN<\/i> for support or transversal teams like OPs.<\/p>\n<p>On my side, I supported the process by setting up a software factory (forge) with all required services for our community:<\/p>\n<ul>\n<li>all sources are now hosted on a DVCS, <a href=\"http:\/\/git-scm.com\" target=\"_blank\" rel=\"noopener\">Git<\/a> using <a href=\"https:\/\/github.com\/exoplatform\" target=\"_blank\" rel=\"noopener\">Github<\/a>,<\/li>\n<li>a <a href=\"https:\/\/github.com\/exoplatform\" target=\"_blank\" rel=\"noopener\">CI server<\/a>, based on <a href=\"http:\/\/jenkins-ci.org\" target=\"_blank\" rel=\"noopener\">Jenkins<\/a> is processing all automated tasks,<\/li>\n<li>all binaries are automatically deployed into our <a href=\"http:\/\/repository.exoplatform.org\/index.html\" target=\"_blank\" rel=\"noopener\">repositories<\/a> based on Sonatype Nexus to be consumed by various deployment services for QA validations and production deployments,<\/li>\n<li><a href=\"https:\/\/sonar.exoplatform.org\" target=\"_blank\" rel=\"noopener\" class=\"broken_link\">quality indicators<\/a> of all projects are pushed to our <a href=\"http:\/\/www.sonarqube.org\" target=\"_blank\" rel=\"noopener\">SonarQube<\/a> instance to let all contributors review their errors,<\/li>\n<li>teams are able to manage code reviews in our <a href=\"https:\/\/www.atlassian.com\/software\/crucible\/overview\" target=\"_blank\" rel=\"noopener\">Atlassian Fisheye\/Crucible<\/a> instance,<\/li>\n<li>and everything is tracked in <a href=\"https:\/\/jira.exoplatform.org\/secure\/Dashboard.jspa\" target=\"_blank\" rel=\"noopener\">Jira<\/a>, using <a href=\"https:\/\/www.atlassian.com\/software\/jira\/agile\" target=\"_blank\" rel=\"noopener\">Jira Agile<\/a> dashboards for Scrum and Kanban, as our community is scattered all over the world (which makes it difficult to manage real post-its).<\/li>\n<\/ul>\n<p>Thereafter, with <a href=\"https:\/\/community.exoplatform.com\/portal\/intranet\/profile\/fdrouet\" target=\"_blank\" rel=\"noopener\">Fr\u00e9d\u00e9ric Drouet<\/a>, for QA purposes (functional, performances \u2026) and now to operate our live services, I contributed to our continuous delivery automation using <a href=\"http:\/\/jenkins-ci.org\" target=\"_blank\" rel=\"noopener\">Jenkins<\/a> but also some more recent technologies like <a href=\"http:\/\/puppetlabs.com\" target=\"_blank\" rel=\"noopener\" class=\"broken_link\">puppet<\/a>, a configuration management tool.<\/p>\n<p><a href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/06-Devops-Cycle.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-6475\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/06-Devops-Cycle.png\" alt=\"06-Devops-Cycle\" width=\"650\"><\/a><i>(image credits to <\/i><a href=\"http:\/\/collab.net\" target=\"_blank\" rel=\"noopener\"><i>collab.net<\/i><\/a><i> &#8211; <\/i><a href=\"http:\/\/www.collab.net\/solutions\/devops\" target=\"_blank\" rel=\"noopener\"><i>http:\/\/www.collab.net\/solutions\/devops<\/i><\/a><i>)<\/i><\/p>\n<p>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\u2019ll share our experience. Next time we\u2019ll discuss sources management (version control systems, workflows, code review &#8230;). I hope you\u2019ll appreciate them.<\/p>\n<p><a href=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/07-Success-Path.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-6476\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/07-Success-Path.jpg\" alt=\"07-Success-Path\" width=\"339\" height=\"300\" srcset=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/07-Success-Path.jpg 339w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/07-Success-Path-300x265.jpg 300w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/07-Success-Path-267x236.jpg 267w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/07-Success-Path-148x131.jpg 148w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/07-Success-Path-100x88.jpg 100w, https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/01\/07-Success-Path-34x30.jpg 34w\" sizes=\"(max-width: 339px) 100vw, 339px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"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 [&hellip;]","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[699],"tags":[],"lang":"en","translations":{"en":6469},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts\/6469"}],"collection":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/comments?post=6469"}],"version-history":[{"count":0,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts\/6469\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/media?parent=6469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/categories?post=6469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/tags?post=6469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}