These are the slides from the talk given at JSConf Asia 2014
---
I will be talking about the "No talk all action" approach we take at RedMart for feature development. You’ll learn how we supercharge development and get code in production fast with an opinionated and automated development workflow. Hint: It’s a cocktail of Git, JS (of course), Chef, Devops & killing pointless meetings.
"13 ways to run web applications on the Internet" Andrii ShumadaFwdays
So, we wrote our app. Using Node.js, React, or Angular. And what's next? How your masterpiece can be shown to the entire Internet, or at least your mom, client, or friends. Probably you should find a DevOps, that will launch it for us... But what if I tell you, how to do it on your own? At this talk I'll show you 13 ways, how to launch your app on the Internet, what is the difference between them, and which method you should choose in a particular situation, from simple to complex, from free to expensive and robust.
You have a minimum viable product or high fidelity prototype. Your venture is lucky enough to get an interest from first customers. The problem is that your software product lacks the main feature – stability. This might spoil the opportunity.
A 5-minute "lightning talk". Very briefly shows how we package a Rails app on a build server, then RSync the app package to our staging and production environments.
"13 ways to run web applications on the Internet" Andrii ShumadaFwdays
So, we wrote our app. Using Node.js, React, or Angular. And what's next? How your masterpiece can be shown to the entire Internet, or at least your mom, client, or friends. Probably you should find a DevOps, that will launch it for us... But what if I tell you, how to do it on your own? At this talk I'll show you 13 ways, how to launch your app on the Internet, what is the difference between them, and which method you should choose in a particular situation, from simple to complex, from free to expensive and robust.
You have a minimum viable product or high fidelity prototype. Your venture is lucky enough to get an interest from first customers. The problem is that your software product lacks the main feature – stability. This might spoil the opportunity.
A 5-minute "lightning talk". Very briefly shows how we package a Rails app on a build server, then RSync the app package to our staging and production environments.
Understand benefits and pain points of cloud, local and vagrant based development
Describe a development flow that combines vagrant and AWS to create a:
consistent environments for all developers
consistent environment from development to production
help organizations move fast – if they are not already doing this
integrate nearly flawlessly with AWS
Ease Development <-> Production Software Deployment
ASP.NET Core is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET Core and explains how they help you develop modern web apps.
Codecoon is the next generation hosting portal from the punkt.de GmbH. In this talk we explain how we implemented the portal and its components using TYPO3 Flow, Opscode Chef, Vagrant and Sinatra. We give a detailed insight in why we used which technologies and which developer itches we want to tackle.
Migrating .NET Application to .NET CoreBaris Ceviz
"Migrate .NET Application to .NET Core with scenarios" presentation in Dotnetkonf. How to migrate .NET Desktop, ASP.NET MVC & Web API or WCF Service applications to .NET Core
Short presentation about Docker and some usage scenarios for Web Developement, Operations and Continuous Delivery. This talk was held at the TYPO3 Camp Stuttgart in 2015.
What is .NET Core?
Tool required for developing .NET Core application.
Understanding Command for using (CLI)
How to create you first Console application and Web Application using Command Line Interface (CLI)
Running ASP.NET Core MVC application using Command Line Interface (CLI)
How to create you first Console application and Web Application using Visual studio 2015
Understanding Project structure of ASP.NET Core MVC
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev EnvironmentRyan J. Salva
Let's geek out over strategies for managing Node + NPM, customizing the command line with bash scripts, tricking out your code editor with plugins, optimizing your edit/preview/debug development loop, choosing devices for your hardware library, and streamlining deployment. Companion blog post found at http://www.ryanjsalva.com/2016/05/15/cordova-dev-environment.html
Jenkins to Gitlab - Intelligent Build-PipelinesChristian Münch
At netz98 we moved from Jenkins to Gitlab. The slides show some insides about Testing of PHP libraries, Magento 1 and Magento 2 modules. How to setup a scalable and fast Gitlab-Pipeline with Docker images.
Multiple django applications on a single server with nginxroskakori
This talk explains how to install and setup multiple Django applications on a single server.
The general principle is to setup a systend service for each application that runs in nginx and gunicorn on Ubunto 20 LTS. This results in a lightweight installation that requires only a few and small configuration files that is well integrated in the existing tool chain around systemd.
Vagrant, Chef and TYPO3 - A Love AffairMichael Lihs
This talk is a re-touch of the talk "Reproducible and Portable Work Environments with Vagrant and Chef" held at the TYPO3 Camp Stuttgart in 2015. It describes how to set up work environments for TYPO3 projects with Vagrant and Chef.
This presentation was held at the DevOps Meetup Frankfurt on 2014/12/08. It describes some tools and practices for testing your infrastructure provisioned with Chef.
The Ultimate Guide To F&B e-commerce statistic in SEA and VN.2014Johnny Tri Dung
The file brings you near to all needed info and data for F&B e-commerce in either SEA or VN with detailed case studies from Europe. Hope you all enjoy!
Understand benefits and pain points of cloud, local and vagrant based development
Describe a development flow that combines vagrant and AWS to create a:
consistent environments for all developers
consistent environment from development to production
help organizations move fast – if they are not already doing this
integrate nearly flawlessly with AWS
Ease Development <-> Production Software Deployment
ASP.NET Core is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET Core and explains how they help you develop modern web apps.
Codecoon is the next generation hosting portal from the punkt.de GmbH. In this talk we explain how we implemented the portal and its components using TYPO3 Flow, Opscode Chef, Vagrant and Sinatra. We give a detailed insight in why we used which technologies and which developer itches we want to tackle.
Migrating .NET Application to .NET CoreBaris Ceviz
"Migrate .NET Application to .NET Core with scenarios" presentation in Dotnetkonf. How to migrate .NET Desktop, ASP.NET MVC & Web API or WCF Service applications to .NET Core
Short presentation about Docker and some usage scenarios for Web Developement, Operations and Continuous Delivery. This talk was held at the TYPO3 Camp Stuttgart in 2015.
What is .NET Core?
Tool required for developing .NET Core application.
Understanding Command for using (CLI)
How to create you first Console application and Web Application using Command Line Interface (CLI)
Running ASP.NET Core MVC application using Command Line Interface (CLI)
How to create you first Console application and Web Application using Visual studio 2015
Understanding Project structure of ASP.NET Core MVC
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev EnvironmentRyan J. Salva
Let's geek out over strategies for managing Node + NPM, customizing the command line with bash scripts, tricking out your code editor with plugins, optimizing your edit/preview/debug development loop, choosing devices for your hardware library, and streamlining deployment. Companion blog post found at http://www.ryanjsalva.com/2016/05/15/cordova-dev-environment.html
Jenkins to Gitlab - Intelligent Build-PipelinesChristian Münch
At netz98 we moved from Jenkins to Gitlab. The slides show some insides about Testing of PHP libraries, Magento 1 and Magento 2 modules. How to setup a scalable and fast Gitlab-Pipeline with Docker images.
Multiple django applications on a single server with nginxroskakori
This talk explains how to install and setup multiple Django applications on a single server.
The general principle is to setup a systend service for each application that runs in nginx and gunicorn on Ubunto 20 LTS. This results in a lightweight installation that requires only a few and small configuration files that is well integrated in the existing tool chain around systemd.
Vagrant, Chef and TYPO3 - A Love AffairMichael Lihs
This talk is a re-touch of the talk "Reproducible and Portable Work Environments with Vagrant and Chef" held at the TYPO3 Camp Stuttgart in 2015. It describes how to set up work environments for TYPO3 projects with Vagrant and Chef.
This presentation was held at the DevOps Meetup Frankfurt on 2014/12/08. It describes some tools and practices for testing your infrastructure provisioned with Chef.
The Ultimate Guide To F&B e-commerce statistic in SEA and VN.2014Johnny Tri Dung
The file brings you near to all needed info and data for F&B e-commerce in either SEA or VN with detailed case studies from Europe. Hope you all enjoy!
Crowdsourcing and collaborative warehousing and logistics werc presentationFLEXE, Inc.
The FLEXE CEO, Karl Siebrecht, participated in a panel on crowdsourcing, collaborative warehousing & logistics at the WERC conference in Providence, Rhode Island last week. Check it out!
Tracxn Startup Research - Online Grocery Landscape, August 2016Tracxn
Five companies — Big Basket (Bangalore, 2011), Benlai (Beijing, 2012), Thrive Market (Los Angeles, 2013), Fruit Day (Shanghai, 2009), and RedMart (Singapore, 2011) raised funding rounds of over $100M this year.
The slides from my Deployment Tactics talk at the ThinkVitamin Code Management online conference (http://thinkvitamin.com/online-conferences/code-manage-deploy/).
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
Presentation about open source tools to set up continuous integration and continuous deployment. Covers Git, Gitlab, Chef, Vagrant, Jenkins, Gatling, Dashing, TYPO3 Surf and some other tools. Shows some best practices for testing with Behat and Functional Testing.
The author is managing editor of http://scalacourses.com, which offers self-paced online courses that teach Introductory and Intermediate Scala and Play Framework.
Our tech process, how we make apps using React Native on Gitlab with Gitlab CI (Continuous Integration) and CD (Continuous Delivery)
Reveal JS source on GitHub: https://github.com/Lingvokot/gitlab-and-lingvokot
This is a presentation give to the Vancouver Drupal users group about moving to GIT as a version control system for a small development team. The presentation details the workflow we settled on, and the git flow method for branch management. You can see a video of the presentation here - http://www.ustream.tv/recorded/13544036
The slides for a talk given at MalagaMakers Geekbeers on 2015-01-15 http://malagamakers.com
The talk was about deployment and glossed about assets preparation using Grunt and an introduction to deployment using Capistrano
Automatisation in development and testing - within budgetDavid Lukac
Working on client projects with very strict budget and resource restrictions, tight deadlines and pressure, many times does not allow for full blown Test Driven Development, Continuous Delivery and other software engineering goodness we would love to have. We will show you easily accessible and quickly implementable options, that allow you to automate your development and testing process, or at least the most painful parts, without blowing the budget. Finally you can relax during deployments of the code to production! :-)
Git and Git Workflow Models as Catalysts of Software DevelopmentLemi Orhan Ergin
This is the slides of my latest talk in DevFest Istanbul 2013 which is organized by Google Developers Group Istanbul. The content mainly has 3 sections. Git branching model in theory, creating a feature by git commands and git best practices.
1) GIT Overview
2) GIT Flow
3) Master and Develop Branches
4) Feature, Release and Hotfix Branches
5) How it works
6) Other Workflows
7) Install and Demo
Enabling Hybrid Workflows with Docker/Mesos @OrbitzSteve Hoffman
Video here: http://bit.ly/oww-mesoscon2015-video
The promise of Mesos to create a datacenter-centric resource pool is a great idea. However, a decade old company with many different types of existing systems and unique workloads can't simply mass migrate to Mesos. That doesn't mean Mesos can't pay a huge part in unifying disparate workloads that construct existing systems while opening the door to new Mesos-centric development.
In this presentation, Steve will cover 3 very different use cases that are being unified under Apache Mesos including: Automated builds of existing code artifacts, automated builds of AWS AMIs via packer in EC2, and rolling deploys & supervision of Docker microservices across environments. The addition of Docker on Mesos has enabled this, but that doesn't mean that all Mesos slaves should be identical. See how the addition of localized support services on slaves can compliment your Docker on Mesos use cases.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
36. Git Flow - Quick Recap
Master - Official Release History
Release - Combined features
Develop - Integration Branch
Branching Model
Hotfix/ - Bugfixes, based off master branch
37. Git Flow - Quick Recap
Master - Official Release History
Release - Combined features
Develop - Integration Branch
feature/* - Development of Features based off
develop branch
Hotfix/ - Bugfixes, based off master branch
39. Git Flow - Quick Recap
Master - Official Release History
Release - Combined features
develop - Integration Branch
feature/* - Development of Features based off
develop branch
Hotfix/ - Bugfixes, based off master branch
41. Git Flow - Quick Recap
Master - Official Release History
release - Combined features
develop - Integration Branch
feature/* - Development of Features based off
develop branch
Hotfix/ - Bugfixes, based off master branch
42. Git Flow - Quick Recap
master - Official Release History
release - Combined features
develop - Integration Branch
feature/* - Development of Features based off
develop branch
Hotfix/ - Bugfixes, based off master branch
43. Git Flow - Quick Recap
master - Official Release History
release - Combined features
develop - Integration Branch
feature/* - Development of Features based off
develop branch
Hotfix/ - Bugfixes, based off master branch
45. Oath - Thou shalt
Only commit in feature branch
Commit & push often
Merge develop into feature branch everyday
Only merge feature into develop, never master
Only merge pull requests into master
58. Communication
- New feature
- new channel on slack #jsconf
- builds go to slack
- feature/jsconf get deployed automatically
- eg. jsconf.alpha.redmart.com
61. INVEST IN
DEVELOP
LIGHTNING BRANCHES ARE IN INVESTMENT IN DEVELOPMENT
ENV
62. How do we actually
deploy them?
Development develop or feature/*
63. Nginx
# Feature branches
server {
listen 80;
server_name *.alpha.redmart.com;
# serve develop as default feature
set $feature "develop";
...
64. # change feature based on host
if ($host ~* ^([^.]+).alpha.redmart.com$){
set $feature $1;
}
# All environments are hosted from a subdirectory
root /path/to/features/$feature;
}
65. Transfer & unzip artifacts of
‘feature/abc’ to
‘/path/to/features/abc’
73. Applications
- Must be environmentally conscious
- Must know start themselves (Just makes it
easier)
- ci/start.sh
74. Developer
S3 (Artifacts)
2. Upload
1. Create Artifacts
Push
Build
Fail
Pass
Slack SSH
into
Server
Chef Server
Download
`sudo chef-client`
3. Get nodes
4. SSH into Node & run
Chef
Editor's Notes
Hi Everyone! How’re we all doing?
Mic test
Where’s my applause crew? Sarmad?
Cool
HDMI, 720i, PAL (50hz)
Hi! I’m Ritesh
That’s me with the white arrow
I do Frontend & Devops at RedMart
We’re Singapore’s leading online grocer
We’re building the next generation Ecommerce platform
ERP
Warehouse
Transport
Logistics
Even a Robotic Trolley
More than just the Website & API
& We’re a startup
Today I want to talk about how we develop features at RedMart
We have a workflow that gets code to production fast
We do this in a “No talk all action” approach
I realise now this is a bad slide to have on a talk
OK this is a bad slide, but what I mean is
We encourage lesser meetings
& more productivity
I want to share how we do that.
Hopefully with this talk, you can apply some of our workflow to help your team
But if not, then if anything else
You’ll get to hear about a real world development workflow of a scaling startup
Raise of hands, How many of you guys have seen this site?
I think it’s pretty cool don’t you think
The CSS Animations - Wah damn power Lah
I totally dig it.
Let’s see if we can replicate it
* GIT FLOW!!
* Open up sublime
* iTerm
* grunt dev
* remember to zoom
Cool!
So that’s done. I think it looks pretty sweet.
So what just happened?
I spent more time figuring out the projector & display stuff
We deployed a feature into production in matter of minutes!!
Yes it was Staged..
Yes it wasn’t really a feature..
Just some CSS stuff
But id’ say..
It was still pretty COOL.
Where’s my applause team.
Thank you.
But in case you’re not convinced..
Let me tell you a bit of a story
About why it’s specifically cool about RedMart
& It’s about Product Market fit.
I know you’re thinking.. what’s this douche talking about product market fit at JS Conf
But...
Bear with me.
Many of us are working at Startups
& I’m really fascinated how the business & company dynamics
Especially how it impacts developers
Because…
Companies Scale Bro
If you’re lucky & people start using your product
& at RedMart count ourselves fortunate that we are
You’re going to go from
10
100
1000
10000
Users/ Orders/ Messages
Or whatever your measure of scale is
As a result,
You’re going to raise money
& More awesome people are going to join your team
To sustain & grow the company
You’re going to be developing more features
In fact you’ll be working on lots of features
worked on by multiple devs
at the same time
& that’s a recipe
For a lot of merge hells
Dependencies issues
Versioning
& it’s multiplied with more people
We need to tackle that
But not only are there Developer issues
We also have a lot more stakeholders
This is especially the case for RedMart
Due to multiple systems
ERP
Warehouse
Transport
Logistics
More than just the Website & API
And all these systems have stakeholders who we need to communicate to
But even our systems are not the same
The issue of communicating changes effectively & efficiently still applies to everyone
Because.. as the team scales, you realize
Huddling behind developers doesn’t scale
How many of us have experienced that.
People crowding behind you as you code, to get some update
It’s so annoying!
Worst still, change this Hex code to that,
Not productive!
On the other hand
Bringing your laptop over every now & then
Also doesn’t scale either
We can utilize our time more effectively
But then, this is super important
We need to figure out an efficient way to get stuff out & comunicated
Otherwise..
We spend more time in meetings
& less time writing code.
Which is really depressing
In fact it’s so depressing, we’ve actually come up with a theory.
I’m sure you guys know about Einstein
Mass Energy Equation
We have another Theory
Don’t have quite a name for it yet.
Let’s just call it Thor Theory. I don’t know
Environment that developers love, a productive environment
Directly proportional to the code they write per day
Inversely proportional to the meetings they attend per day
Our goal is to optimize that
So just a quick recap
Companies scale
Usually results in more meetings
& More branch mess
We need to fight that
Empower developers to work on as many features at once
So they can write more code
& not have to spend too much time communicating
So we can reduce meetings
So how do we do that.
How do we empower multi feature development
The answer starts with Git Flow
Most of you might know what Git flow is, bear with me again
For the rest, here’s a quick recap
Git flow is a branching model
It’s a convention everybody in the team follows
Ensures a sane branching state
For our purposes
The fundamental block are feature branches
feature branches are where you write all your code
It’s based off the develop branch
For eg.
What we did just now
git flow feature start jsconf
creates a branch feature/jsconf based on develop
checks out that branch
Develop branch is the integration branch
It’s where you merge feature branches go once they’re finished
So just now when we did
git flow feature finish jsconf
checkout develop
merge feature/jsconf into develop
delete feature/jsconf branch
Release branches - is when we want to combine a set of features
Especially useful when you want to stage completed features to deploy later
Worked on feature a, b & c.
Done & integrated in develop branch
Now we to start feature d & e
At that point it’s good to get develop merged into release
& then not touch it until it’s deployed
& as you can probably guess at this point
master branch is official release history
Anything that’s in master branch is production
One last thing is hotfix
It’s similar to feature branches, but instead of develop
It’s based of master branch instead
So git flow really helps to maintain sanity of branches
You’ll also notice that 3 branches are kind of gate keepes
develop
release
master
so that makes it a common sense decision in terms of code review
Any time a feature goes into develop, release or master
we do a code review
But Feature branches are cheap. Do whatever you want with them.
So git flow helps
But Oaths also helps. We specifically have these:
commit in feature branch
commit & push often
In fact, every logical improvement to the code, should be committed & pushed
merge develop into feature everyday
merge feature into develop, never master
merge only pull requests into master
So as long as we follow git flow
& stick to our oauth
We’re really able to work on as many features as we like
Just having branches is obviously not enough
We still have to bring our laptops everywhere
We need to deploy them
& to to that, let’s talk about
Environments
Of which we have 4
& again we’ll see how git flow is the starting point
The first one is Local.
Local is straightforward. The developers laptop
Then we jump to the 3rd one
Staging
I’ll come back to the 2nd
Staging is equivalent to the develop branch or the release branch
The reason for both:
most of the times we don’t have release branch, If we do, it’s release branch otherwise develop
& Obviously we have production
Which runs everything in the master branch
You’d think that’s the most important environment, but to us
but actually..
To us, the development environment is the most crucial
That’s where all our features are deployed at every single push
So when we deploy the develop branch, it goes to alpha.redmart.com
When we deploy the feature jsconf, it goes to jsconf.alpha.redmart.com
& the command to deploy
The ever so loved ‘git push’
So literally all our developers do is git push
Depending on what branch you push, it get’s deployed by CI process automatically
We use Travis, but you could easily use something else.
Basically, once you do a push
travis picks up the branch & hence the environment & servers
It runs the tests
It creates the artifacts
compresses, minifies, & zips it up
Transfers the artifacts to the correct server
& starts the application
& we use Grunt here
compressing
minifying
zipping
transferring the artifacts
That allows us to deploy with git commands
Doesn’t mess the developer workflow
Communication is also integrated into the developer worflow
Everytime we have a new feature
There’s a new channel on slack
All the builds in the feature branches & pushed to slack
Every commit is automatically deployed
Just like in the case with jsconf feature earlier
So we no longer have to bring our laptops over to show anything
Every incremental change is communicated
& we communicate in the best way we know how
Which is code
I don’t mean showing the code obviously,
but working code that people can interact with.
As a result of that
We really do have way less meetings
Play more foosball
Turns out, everyone hates them.
That was new to me
I thought only developers did. :(
So back to my Lightning slide cuz i love it so much
What really is lightning branches?
It’s actually nothing but an considered investment in the development environment
Every logical improvement/ commit is important
Not just the final deployment to production
Lightning branches really inculcate the habit of pushing small incremental changes fast & getting feedback
Which is really awesome.
Now if you’ve been sleeping all along
These last few slides are the crux of it
How do you actually setup lightning branches?
& the answer is really simple.
Nginx
It’s really good at routing
& your SPA is really good at
Being light weight
& running just about anywhere
So all you need to is this nginx server block
Set a whitelist server name
Set a default feature. We use develop
Change the feature based on the host
Set the root a specified location
Then it’s just a simple matter of
Transferring your build artifacts into the correct path on the server
It just works!
What. really? It’s that simple?
Urmm… Yes.
Ok, I mean actually there’s more.
But it’s to do with Chef (which is ruby based)
& I value my life. talking about that here.
Blindfold you & drop you, you should know where you are