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.
Your Digital Assistant.
Making complex approach simple. Straightforward process saves time. No more waiting to connect with people that matter to you. Safety first is not a cliché - Securely protect information in cloud storage to prevent any third party from accessing data.
Would you rather make your visitors feel burdened by making them wait? Or choose VizMan for a stress-free experience? VizMan is an automated visitor management system that works for any industries not limited to factories, societies, government institutes, and warehouses. A new age contactless way of logging information of visitors, employees, packages, and vehicles. VizMan is a digital logbook so it deters unnecessary use of paper or space since there is no requirement of bundles of registers that is left to collect dust in a corner of a room. Visitor’s essential details, helps in scheduling meetings for visitors and employees, and assists in supervising the attendance of the employees. With VizMan, visitors don’t need to wait for hours in long queues. VizMan handles visitors with the value they deserve because we know time is important to you.
Feasible Features
One Subscription, Four Modules – Admin, Employee, Receptionist, and Gatekeeper ensures confidentiality and prevents data from being manipulated
User Friendly – can be easily used on Android, iOS, and Web Interface
Multiple Accessibility – Log in through any device from any place at any time
One app for all industries – a Visitor Management System that works for any organisation.
Stress-free Sign-up
Visitor is registered and checked-in by the Receptionist
Host gets a notification, where they opt to Approve the meeting
Host notifies the Receptionist of the end of the meeting
Visitor is checked-out by the Receptionist
Host enters notes and remarks of the meeting
Customizable Components
Scheduling Meetings – Host can invite visitors for meetings and also approve, reject and reschedule meetings
Single/Bulk invites – Invitations can be sent individually to a visitor or collectively to many visitors
VIP Visitors – Additional security of data for VIP visitors to avoid misuse of information
Courier Management – Keeps a check on deliveries like commodities being delivered in and out of establishments
Alerts & Notifications – Get notified on SMS, email, and application
Parking Management – Manage availability of parking space
Individual log-in – Every user has their own log-in id
Visitor/Meeting Analytics – Evaluate notes and remarks of the meeting stored in the system
Visitor Management System is a secure and user friendly database manager that records, filters, tracks the visitors to your organization.
"Secure Your Premises with VizMan (VMS) – Get It Now"
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Modern design is crucial in today's digital environment, and this is especially true for SharePoint intranets. The design of these digital hubs is critical to user engagement and productivity enhancement. They are the cornerstone of internal collaboration and interaction within enterprises.
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.
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.
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.
Designing for Privacy in Amazon Web ServicesKrzysztofKkol1
Data privacy is one of the most critical issues that businesses face. This presentation shares insights on the principles and best practices for ensuring the resilience and security of your workload.
Drawing on a real-life project from the HR industry, the various challenges will be demonstrated: data protection, self-healing, business continuity, security, and transparency of data processing. This systematized approach allowed to create a secure AWS cloud infrastructure that not only met strict compliance rules but also exceeded the client's expectations.
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/
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.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
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.
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?XfilesPro
Worried about document security while sharing them in Salesforce? Fret no more! Here are the top-notch security standards XfilesPro upholds to ensure strong security for your Salesforce documents while sharing with internal or external people.
To learn more, read the blog: https://www.xfilespro.com/how-does-xfilespro-make-document-sharing-secure-and-seamless-in-salesforce/
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
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