Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lepsta developer workshop

Lepsta developer workshop

A hands-on workshop/meetup focusing on moving code from development to production using auto-deploy functionality from github => travis => dockerhub => heroku.

Google slides looks better - https://docs.google.com/presentation/d/1FU0f-3Xd-4NgblomPzHeU3tk7d3dOhqbgSvDdbBs_rs/edit?usp=sharing

Focuses on how to improve confidence deploying your code when working with a distributed team environment.

Wale Ayandiran

September 28, 2019
Tweet

More Decks by Wale Ayandiran

Other Decks in Programming

Transcript

  1. DEVELOPMENT TO
    PRODUCTION

    View Slide

  2. hello!
    I am Wale Ayandiran
    A Senior Software Engineer with Andela.
    ✘ A marathoner
    ✘ Pretend dancer
    ✘ Likes the idea of food
    ✘ Advocate of kindness
    ✘ Why so serious advocate, hence “Heaven will not fall”

    View Slide

  3. What we will be covering
    ✘ Understanding your code environments
    ✘ Working in the context of a team
    ✘ Hands-on

    View Slide

  4. Understanding your
    code environments

    View Slide

  5. Development Environments
    Staging / Testing
    Development
    Production /
    Release

    View Slide

  6. What we wish happens during development

    View Slide

  7. DEVELOPMENT
    Your comfort zone.
    where you get things done,
    the tools you use to get the
    initial work done. You
    should be very fine failing a
    lot in this environment
    without anyone getting
    hurt.
    Tools include but not limited
    to;
    ✘ Your IDE (VSCODE, SUBLIME,
    ATOM, ANDROID STUDIO
    etc..)
    ✘ Operating system.
    ✘ Technology used (PHP, JS,
    PYTHON, GO etc..)
    ✘ Application Server
    (optional)
    ✘ Optionally, your PC (HP,
    DELL, MAC) etc.
    Things that happen here;
    Documentation
    Automated testing
    Systems Architecturing
    Deployment - CI/CD

    View Slide

  8. What truly happens
    20% writing coding & hoping it works
    80% questioning your life choices

    View Slide

  9. What truly happens
    20% writing coding & hoping it works
    80% questioning your life choices

    View Slide

  10. When it finally works

    View Slide

  11. A replica of the target environment but
    not entirely in terms of data and other
    communication services involved. Mostly
    for manual testing of the application by
    Users to see if it works as expected.
    STAGING
    Things that happen here;
    ✘ Q/A testing
    ✘ User testing
    ✘ A/B testing
    ✘ Regression testing

    View Slide

  12. WHAT REALLY HAPPENS IN STAGING

    View Slide

  13. The target environment, the final
    housing of the application to serve
    all the users of the application.
    Product <> Production
    PRODUCTION
    Things that happen here (Post deployment /
    production);
    ✘ Monitoring & Reporting
    ✘ Incident Management
    ✘ A/B testing

    View Slide

  14. PRODUCTION
    Things that happen here (Post deployment /
    production);
    ✘ Monitoring & Reporting
    ✘ Incident Management
    ✘ A/B testing
    So we don’t have a case of ================>

    View Slide

  15. WORKING IN THE
    CONTEXT OF A TEAM
    our office

    View Slide

  16. TEAM DYNAMICS
    Team dynamics are created by the
    nature of the team’s work, the
    personalities within the team, their
    working relationships with other
    people, and the environment in which
    the team works.
    Environment which team work
    ✘ Team tools
    ○ Project management
    ○ Communication
    ○ Source control
    ✘ Workflows & convention
    ○ Style guide
    ○ Git workflow
    ○ Dependency manager

    View Slide

  17. Team Tools
    Project Management
    ✘ Trello
    ✘ Pivotal Tracker
    ✘ Asana
    Communication
    ✘ Slack
    ✘ Microsoft teams
    ✘ Skype
    ✘ Whatsapp
    ✘ Zoom
    ✘ Google Hangout
    ✘ Email - Gmail
    Repository control
    ✘ GitHub
    ✘ Gitlab
    ✘ BitBucket

    View Slide

  18. Team Tools

    View Slide

  19. Workflows & Conventions
    Style Guide
    ✘ Airbnb
    ✘ Google
    ✘ PSR
    Git Workflow
    ✘ PR conventions
    ✘ Branch Naming
    ✘ Commit messages
    Dependency Package
    Managers
    ✘ NPM
    ✘ YARN
    ✘ Composer
    ✘ PIP
    ✘ Gradle
    ✘ Cocoapods

    View Slide

  20. HANDS-ON Code

    View Slide

  21. What we will be building
    ✘ A simple API service using XAPI.
    ✘ Move from development to
    production using Heroku Apps.
    ✘ Development to production
    using docker containers
    ✘ Auto container deployment
    strategy CI/CD.
    ✘ https://github.com/wal
    ecloud/xapi
    ✘ https://heroku.com
    ✘ https://docker.com
    ✘ https://travis.com

    View Slide

  22. Our development setup
    ✘ PC OS - (MAC, WINDOW, LINUX etc..)
    ✘ Programming Language - JavaScript NODEJS
    ✘ Code editor / IDE - VSCODE

    View Slide

  23. Staging
    ✘ Temporary deployment
    ✘ Testing
    ○ Automated testing
    ○ Q/A

    View Slide

  24. Production
    ✘ Hosting platform - (heroku, AWS, AZURE, GCP,
    Digital Ocean, On-premise server).
    ✘ Container housing - (docker registry, heroku
    container registry, Privately hosted registries. )
    ✘ Monitoring & Reporting - (Runscope, Bugsnap,
    Datadog, New relic)
    ✘ Analytics - (Azure App analytics, Google Analytics
    etc..)

    View Slide

  25. SOURCE LINKS
    ✘ Code repository - https://github.com/walecloud/lepsta
    ✘ Staging - https://lepsta-staging.herokuapp.com
    ✘ Production - https://lepsta.herokuapp.com
    ✘ Docker Image - https://hub.docker.com/r/walecloud/lepsta
    ✘ Travis CI - https://travis-ci.org/waleCloud/lepsta

    View Slide

  26. Let’s review some concepts
    CI
    Continuous integration (CI) is
    focused on automatically building
    and testing code, as compared to
    CD
    CD
    Continuous delivery (CD), which
    automates the entire software
    release process up to production.
    DOCKER
    Docker is a set of
    platform-as-a-service products
    that use OS-level virtualization to
    deliver software in packages called
    containers.
    Containers
    Containers allow a developer to
    package up an application with all
    of the parts it needs, such as
    libraries and other dependencies,
    and ship it all out as one package.
    Registries
    A container registry is a collection of
    repositories made to store
    container images. A container image
    is a file comprised of multiple layers
    which can execute applications in a
    single instance.
    Cloud hosting
    Cloud hosting is the on-demand
    availability of computer system
    resources, especially data storage
    and computing power, without
    direct active management by the
    user

    View Slide

  27. Credits
    Special thanks to all the people who made and released
    these awesome resources for free:
    ✘ Presentation template by SlidesCarnival
    ✘ Photographs by Unsplash
    ✘ Gifs by Giphy

    View Slide

  28. Presentation design
    This presentation uses the following typographies and colors:
    ✘ Titles: Walter Turncoat
    ✘ Body copy: Sniglet
    You can download the fonts on these pages:
    https://www.fontsquirrel.com/fonts/walter-turncoat
    https://www.fontsquirrel.com/fonts/sniglet
    ✘ White #FFFFFF
    You don’t need to keep this slide in your presentation. It’s only here to serve you as a design guide if you need to create new
    slides or download the fonts to edit the presentation in PowerPoint®

    View Slide

  29. thanks!
    Any questions?
    You can find me at
    @walecloud

    View Slide