Cloud Computing & Devops In A Nutshell



  • The purpose of this page is

    • To show the relationship between certain cloud services & on-premise.
    • To show the traditional software development lifecycle (SDLC).
    • To describe the Agile guidelines.
    • To show the Agile workflow.
    • To show the CI/CD workflow.

    Table indicates division between your company maintained technology & vendor maintained technology in the as cloud computing has progressed.

    Description Colour
    Your company maintains the technology - Red Red Text
    The vendor maintains technology - Green Green Text

    Many industries are now moving towards a cloud strategy and moving away from on-premise, some company choose a hybrid cloud and some gone all out and have moved completely to the cloud, All the "something" as a service, acronyms tell you what is managed and by whom.

    Table showing the technology and who manages it. Note some of the bigger vendors cross boundaries across all categories. The technology has moved on: yes, there's more buzzy wordy marketing terminology: yes, at the end of the day, none of this runs on thin air (yet). The terms in the table show where the services are divided and who is managing those services.

    On Premise, IaaS, PaaS, & SaaS Comparison

    In red, your business manage and in green, the vendor manages.

    Traditional datacenter computing (On Premise) Infrastructure As A Service (IaaS) Platform As As Service (PaaS) Software As A Service (SaaS)
    All Yours Amazon Web Service (AWS), Microsoft Azure (Azure), Google Compute Engine (GCE), OpenStack Redhat OpenShift Online/Origin, Cloud Foundary, Google App Engine, IBM Bluemix Dropbox, Google Apps, Microsoft Office 365, Slack
    Application Application Application Application
    Runtimes Runtimes Runtimes Runtimes
    Security & Integration Security & Integration Security & Integration Security & Integration
    Databases Databases Databases Databases
    Servers Servers Servers Servers
    Virtualization Virtualization Virtualization Virtualization
    Server Hardware Server Hardware Server Hardware Server Hardware
    Storage Storage Storage Storage
    Networking Networking Networking Networking
    Advantages
    Save Money, Scalable, Highly Availability, Less license costs, More time for business growth Faster to develop software & test No infrastructure purchases, Lower cost, No building or maintaining infrastructure
    Drawbacks. Some of which are not so much of an issue in recent years.
    Security concerns, Less flexible in some areas, Governance & Compliance concerns, Technical learning curve, need for expertise Security concerns, sensitive data, less flexible, Technical learning curve, need for expertise Security Concerns, Compliance & Governance, Performance, Less flexible, Technical learning curve, need for expertise

    The table above provides some background to how services are managed moving from on premise to cloud computing. Next, what about the use of these services in terms of a development lifecycle, first lets show what the development lifecycle looked like historically using a software development lifecycle (SDLC) called The Waterfall Model

    The Waterfall Model

    Stages Involved Requirements for project >>> Design >>> Implementation >>> Testing >>> Deployment >>> Maintenance
    Description of stage Find out what the requirements are Create a design based on the requirements Do the actual work to develop the software Test your software Deploy to production Fix bugs via patches & enhancements
    Observation A long time is spent on this stage, when done no room for modifications, when development starts A long time is spent on this stage, when done no room for modifications, when development starts This stage can takes months (based on complexity), the testing team are left waiting to test. A long time take for Integration & release to testing environments & issues during this time are resolved as and when a good slot is available Testing take a long time (based on complexity) and various types of testing Deployment again finding a time slot for production is not easy, time taken to deploy can be long, what deployment issues will there be? On Monday after deployment to production, users will come back with issues & patches will have to be created to fix bugs, and the whole cycle repeats

    Drawbacks of the waterfall model.

    • Hard to track progress.
    • Time consuming to retest when a issues has been identified.
    • Integration is done at the end of the development cycle, so issues are identified late in the cycle.
    • After patches are created for bugs, regression testing, usually were kicked off using crontab, takes a long time to find out it if worked or not.

    Agile Software Development.

    You can quickly ascertain there are a lot of shortfalls using the The Waterfall Model, so which direction did things move in? something called Agile Model quickly started to gain momentum and now many companies adopt this model to develop software.

    The Agile software development has12 principles that are followed.
    From the website: http://agilemanifesto.org/principles.html. Quoted as is, no need for interpretation.

    • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

    • Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

    • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

    • Business people and developers must work together daily throughout the project.

    • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

    • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

    • Working software is the primary measure of progress.

    • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

    • Continuous attention to technical excellence and good design enhances agility.

    • Simplicity--the art of maximizing the amount of work not done--is essential.

    • The best architectures, requirements, and designs emerge from self- organizing teams.

    • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

    Agile Workflow Table 1

    Stages Involved Create a high-level design >>> Develop first feature Integrate & test >>> Develop second feature Integrate & test >>> Release >>> Review
    Did it all go ok, all tests passed? YES Release to your user base
    Did it all go ok, all tests passed? NO Make changes, Add to next iteration (goes back into the Agile Workflow in Table 1 above

    Where does working with Agile principles give you?

    In short, some of the things are speed & efficiency, collaboration between teams, less or dynamic documentation and developers work in parallel within each iteration. The length of the iteration can be what you decide for your project.

    Scrum Framework

    Read up on the background behind Scrum Framework:
    https://en.wikipedia.org/wiki/Ken_Schwaber
    https://en.wikipedia.org/wiki/Jeff_Sutherland

    An Agile software development methodology, the team is self-organizing, no team leader, each team member should how to solve the problems themselves, , each member of the team is skilled across all technologies used, so that new features or tasks can be carried out by anyone in the team.

    Some terms used in the Scrum Framework.

    Sprint The project is broken down into sprint cycles of a set period, usually 2wks+ where all the tasks needed to get the first bit done are included in those 2wks, at the end of 2wks, the next 2wks starts immediately, then the next, and next, until project of phase is complete.

    Product backlog A dynamic list of features, which is added to or deleted from as required.

    Sprint backlog A subset of the list in product backlog, for the sprint.

    Increment A sum of tasks that have been completed so far, up to the current sprint.

    The development team Manage their own schedule around the sprint. Only members of the development team create the increment.

    The product owner The person who is the mediator between the Scrum team and everyone else, they liaise between the scrum team & stakeholders, testers, operations, etc.

    The Scrum Master They ensure the scrum is being followed to the rules of scrum practices and ensure the scrum understood.

    Scrum Workflow

    Stages Involved Product backlog >>> Sprint planning >>> Sprint backlog >>> Sprint >>> Daily Scrum >>> Shipping Features >>> Review & Planning Meeting

    Sprint Planning is mainly for the developers to get together and discuss the sprint features, issues, etc it is timed within the sprint cycle. What's to be done? what is to be done? in the current sprint cycle, and where is it in the entire product backlog, do you need to carry any tasks forward to the next sprint? How did you get on in the last sprint?

    Sprint Cycle developers are getting tasks done to meet the time allotted to the sprint.

    Daily Scrum Meetings These are the daily stand-up meetings, what was does yesterday>, any issues, what will be done today?

    Sprint review Show & tell the stakeholders what has been done to date in a way of a presentation using the tools used to manage the sprints. Additional take input from the stakeholders.

    Sprint Retrospective What things worked well? What can be done better? As it sounds like a lot of meetings, it is good to mention where this meeting goes in the timeline of meetings, It is after Sprint Review meeting, but before the Sprint Planning meeting

    The Scrum Framework, leads nicely into how developers work using Continuous Integration practice. First, what is Continuous Integration? It is when you have a number of developers integrating their own work, into the projects integration branch. Integration is you as the developer submitting your new or modified work, whether it is a new feature or a patch, you submit your personal work into the common work area which is the Integration Branch

    Continuous Integration Workflow

    The table below should be followed left to right on the first row and downwards for each column.

    Tools under column Integrate, apply to columns Integrate, Build & Package.

    Stages Involved Working on Feature 1 >>> Develop >>> Integrate >>> Build & Package >>> Deploy to test >>> Testing (various tests) >>> Release to user base. Production/Live >>> Next Feature
    Application Lifecycle Management Tools: Atlassian Jira, Trello, Pivotoal Tracker, Visual Studio, Asana, Basecamp, Phabricator0_1495449119946_downarrow.png SCM/VCS: Git, Subversion, Mercurial, Github, Gogs, Atlassian Bitbucket, Gitlab0_1495449119946_downarrow.png Deployment Test, If tests succeed deploy to live. Fully automated or controlled: Octopus Deploy, XebiaLabs XL Deploy, Rundeck, Capistrano, Urban Code, Juju, ElasticBox, Spinnaker0_1495449119946_downarrow.png Test Tools: Selinium, Jasmine, Mocha, Gauntlt, Gatling, OWASP ZAP, XebiaLabs Karma, JUnit, Fitnesse, NUnit, Qunit, Test NG, Cucumber, Galan Framework, Load Impact, JMeter, BlazeMeter, Pytest, Serverspec, Browsersync, SpecFlow, Pa11y, Newman, xUnit Cloud/IaaS/PaaS: AWS, Dokku, Heroku, Flynn, Google Cloud Platform, Microsoft Azure, Cloud Foundary, Rackspace, OpenStack, DEIS, appfog, OpenShift, Engine Yard0_1495449119946_downarrow.png
    Communication & ChatOps Tools:Slack, Hipchat, #irc, Flowdock, Microsoft Teams, Ryver, Mattermost, Rocket chat, Cog, Nestor, Lita, Hubot CI/CD:Wercker, XebiaLabs Snap, Teamcity, Jenkins, Atlassian Bamboo, Drone.io, Circle CI, Travis, Go, Codeship Configuration Management & Automation:Puppet, Chef, Ansible, SaltStack, CFEngine, Powershell, Vagrant, Terraform
    Knowledge Sharing Tools:Jekyll, Github, Atlassian Confluence, Mark Down, Hugo, Read the docs, Apiblueprint, RAML, Flarum, Graphviz, Open API, Discourse, Reddit Build:Sbt, Gradle, Grunt, Docker, Maven, Nant, Apache Ant, Gulp, Packer, MSbuild, Leiningen, Rake Artefact Management: CoreOS Quay, Docker Hub, Docker Registry, Bower, JFrog Artifactory, Python Package Index, Xebialabs NuGet, Apache Archiva, npm, Sonartype Nexus
    Database Management: DBmaestro, DBdeploy, Flyway, Redgate, Flocker, Liquibase

    During the above flow failures at each stage are identified quickly and fixed. Developers should rebase their personal branch with the integration branch frequently, make changes, integrate (check-in), build, test, to pick up issues quickly, this will be avoid prolonging the sprint cycle with a number of integration issues, and possibly have an impact on the duration of the entire project.

    The use of automation tools throughout the workflow makes the workflow quicker and automation notifications at each stage allow you to act quickly on issues.



© Lightnetics 2024