2. www.intrercom.com.eg 2
Businessin thefast lane
Timeto 50million users
Internet
4 years
Radio
38 years
Television
13 years
Facebook
1,096 days
Google+
88 days
Did not exist 15 years ago, and today havemillions of subscribers and offer high-qualityservices at no-charge
Innovation, efficiency andagility are requirements for survival
ParadigmShift
3. www.intrercom.com.eg 3
SDLC Overview
Aprocessfor planning, creating, testing, and deploying a softwareproject.
WhatisSDLC?
Initiation –ReleasePlanning
Requirementand Analysis – Story Writing
Design/ IterationZero
Development/Implementation
Testing/ Integration
Stabilization / Last Iteration
Deploymenton UAT
Deploymenton Production
Maintenance /Support / Warranty
SDLCPhases
4. www.intrercom.com.eg 4
Agile ScrumOverview
Scrum is an iterativeand incrementalSDLC frameworkforagile softwareprojectmanagement.
Scrum has the following characteristics:
A short, fixed duration inweekswithadjustable scope, called sprints or iterations.
A repeatingsequenceof events,milestones,and meetings.
A practice of implementingand testing newrequirements,called stories,to ensuresomeworkis release-readyafter eachsprint.
An practiceof gaining the knowledgenecessaryto reducethe riskof a technical approach, betterunderstand a requirement,or increasethe
reliability of a Story estimate,called spikes.
Commonly used roles suchas product owner,scrummaster,and teammember.
WhatisScrum?
5. www.intrercom.com.eg 5
Need for DevOps
The development teamDevproducesworkingfunctionalityattheend ofevery iteration/ sprint.However, thecompleted functionalitywouldhaveto
waituntilthe releasedatearrives.
The IToperationsteam Ops takesover thecompleted "deployable"binariesfromthe Devteam andputsthem intoproduction.
Agileproject Scenario
• TheDEV team gives full attention to the functional requirements at the expense ofdeployment, configuration, support
and othernon-functional requirements.
• Tests conducted locally are not accurate.
• Lack of deepcodereview
• Lack of central repository for codeand libraries used
• Lack of environment profiles (Development / Testing /Staging /Production)
• Lack of Release Management
• Lack of Test Automation
• A lot of regression tests to beperformed
This leads to surprises during UAT deployment, production warranty and support.
Problems
7. www.intrercom.com.eg 7
Need for DevOps
DevOpsis a set of practices to automate the process of software delivery andinfrastructure changes.
It aims at establishing a culture and environment where building, testing, and releasing software can happen rapidly,
frequently, andmore reliably.
It needsa cross-functional team from:
• Software Development (SDS)
• Quality ProcessEngineer (QA)
• Quality TestingEngineer(QC)
• ITOperations (IT Services)
Solution -DevOps
9. www.intrercom.com.eg 9
DevOps Toolchain
BecauseDevOps applied to all phases of SDLC, there is no single "DevOps tool": it is rather a set (or"DevOps Toolchain")
This toolchain aims to follow our SDLC processes at the tool level, to minimize the required effort in applying and
reviewing them later
DevOpstools fit into one ormoreof these categories:
Code — Code development and review, version control tools, codemerging.
Build —Continuous integration tools, build status.
Test— Test and results determine performance.
Package — Artifact repository, application pre-deployment staging.
Release — Change management, release approvals, release automation.
Configure— Infrastructure configuration and management, Infrastructure as Code tools.
Monitor — Applications performance monitoring, end–userexperience.
Collaborate –Team Interactive Communication Tool
Solution -DevOps
10. www.intrercom.com.eg 10
DevOps Toolchain –VersionControlorSCM
Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later
Weareusing SVN and Git, but our plan is to moveall projects to Git
Weneed also to request a private GitHub repository for Intercom projects
https://svn.intercom.com.eg/svn https://git.intercom.com.eg/
11. www.intrercom.com.eg 11
DevOps Toolchain –IDE
An IDE is a software development tool that consists of a source code editor, WYSIWYG editor, compiler, build automation
tools, code completion tools and a debugger. Most modern IDEs have plugins to integrate with VCS, TFS, CI, bug trackers,
databases, web browsers and application servers.
Weareusing IBM RAD for WebSphere-based projects, and recently IntelliJ IDEA
Ourplan is to use IntelliJ IDEA – Ultimate Edition for all our Java projects
12. www.intrercom.com.eg 12
DevOps Toolchain –Project Management Tool
We are using Microsoft® Team Foundation Server (TFS) that provides source code management (with Git), reporting,
requirements management, project management, bug tracking, testing andrelease managementcapabilities.
It coversthe entire application lifecycle, and enables DevOps capabilities.
Westill use Microsoft Project Web Access 2007 to submit our timesheet
https://tfs.intercom.com.eg:8080/tfs https://projectsrv.intercom.com.eg/PWA/default.aspx
13. www.intrercom.com.eg 13
DevOps Toolchain –ContinuousIntegration Tool
Weareusing Jenkins asa CI Server
Jenkins is an open source automation server written in Java. Jenkins helps to automate the non-human part of software
development process, with continuous integration and facilitating technical aspects of continuous delivery
Weareplanned to try its modern brother: Jenkins Blue Ocean
https://dev.intercom.com.eg:8080/
15. www.intrercom.com.eg 15
DevOps Toolchain –Build Automation Tool
Oneof the important things in CI transition is to havea Build Automation Tool and Dependency Management Tool
Maven is used to refer to commonlibraries without actually including them within the project files or the version control
Gradle has the samefeatures and is mandatory for building Android-based projects
Artifactory is used to make a local maven repository, that give us an intranet-level, copy of the central repository and
minimize repeated network calls
https://dev.intercom.com.eg:8081/
18. www.intrercom.com.eg 18
DevOps Toolchain –Unit &Integration Testing
JUnit 5 is the next generation of JUnit. The goal is to create an up-to-date foundation for developer-side testing on the JVM.
This includes focusing on Java 8 and above,aswell asenabling many different styles of testing
Mockito is a testing framework for Java. It allows the creation of test double objects in automated unit tests for the
purpose of Test-driven Development (TDD) or BehaviourDriven Development (BDD)
19. www.intrercom.com.eg 19
DevOps Toolchain –ContinuousCode Quality
SonarQube is an open source platform for continuous inspection of code quality to perform automatic reviews with static
analysis of codeto detect bugs, codesmells andsecurity vulnerabilities
It provides the capability to not only show health of an application but also to highlight issues newly introduced. With a
Quality Gatein place, you can fix the leak and therefore improvecodequality systematically
21. www.intrercom.com.eg 21
DevOps Toolchain –Application SecurityQuality
IBM Security AppScan is used to enhance web and mobile application security and strengthen regulatory compliance
prior to deployment by identify security risks, generatereports and fix recommendations.
Recently, wegot license for Nessus Vulnerability Scannerand will useit very soon
22. www.intrercom.com.eg 22
DevOps Toolchain –Team Collaboration
Slack is a cloud-based collaboration tool that is integrated with our CI components, and provide real-time notifications for
Desktop and mobile devices.
Currently, it is integrated with Jenkins, Gitlab
It is faster and morerealistic than E-Mail
It becamethe modern tool for development communities across the globe
25. www.intrercom.com.eg 25
DevOps - Whereto go
OpenStack is a free and open-source software platform for cloud computing, mostly deployed as
infrastructure-as-a-service, whereby virtual servers and otherresources are made available to customers
Wecan use it to createourownprivate cloud
26. www.intrercom.com.eg 26
DevOps - Whereto go
Docker is an open platform for developers and system admins to build, ship, and run distributed applications,
whether onlaptops, data canter VMs,orthe cloud
Wecan use it to createourownprivate cloud
27. www.intrercom.com.eg 27
DevOps - Whereto go
Amazon Web Services (AWS) is a securecloud services platform, offering compute power, database storage,
content delivery and other functionality to help businesses scale andgrow
Wehave to have a good experiencein AWS to beable to deploy ourapplications on top of it or provide a
complete AWS Solution Architecture in ourfuture offers if required