Servers & Developers. Julian Nadeau Production Engineer

Similar documents
Kubernetes 101: Pods, Nodes, Containers, andclusters

Running MarkLogic in Containers (Both Docker and Kubernetes)

AZURE CONTAINER INSTANCES

Kuber-what?! Learn about Kubernetes

Building a Data-Friendly Platform for a Data- Driven Future

Getting Started With Containers

SECTION 1: CODE REASONING + VERSION CONTROL + ECLIPSE

Real World Web Scalability. Ask Bjørn Hansen Develooper LLC

Web Server Setup Guide

Developers and DBAs. Farmers and City Slickers have different mindsets

Important DevOps Technologies (3+2+3days) for Deployment

Case Study: Aurea Software Goes Beyond the Limits of Amazon EBS to Run 200 Kubernetes Stateful Pods Per Host

Containerised Development of a Scientific Data Management System Ben Leighton, Andrew Freebairn, Ashley Sommer, Jonathan Yu, Simon Cox LAND AND WATER

Real Life Web Development. Joseph Paul Cohen

Docker & Chef. Containers. Containers and Docker 8/4/14. Linux containers (LXC) Single operating system Multiple isolated, working configurations

Microservices. Chaos Kontrolle mit Kubernetes. Robert Kubis - Developer Advocate,

TOP DEVELOPERS MINDSET. All About the 5 Things You Don t Know.

Monitoring Java in Docker at CDK

a career how and Tuesday, November 8, 2011

A Whirlwind Tour of Apache Mesos

Building/Running Distributed Systems with Apache Mesos

CSE 153 Design of Operating Systems

An Introduction to Kubernetes

Lecture 17 Introduction to Memory Hierarchies" Why it s important " Fundamental lesson(s)" Suggested reading:" (HP Chapter

Web Hosting. Important features to consider

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Inside the PostgreSQL Shared Buffer Cache

OpenShift 3 Technical Architecture. Clayton Coleman, Dan McPherson Lead Engineers

How to Find (Almost) Anything on the Internet CLASS TAUGHT BY SARA KUMEROW

Software Development I

Everything You Ever Wanted To Know About Resource Scheduling... Almost

NAT64/DNS64 experiments, warnings and one useful tool

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

Everything you need to know about cloud. For companies with people in them

Safe Harbor Statement

DevOps + Infrastructure TRACK SUPPORTED BY

Large-scale cluster management at Google with Borg

Overview of Container Management

Software containers are likely to become a very important tool over the

Kubernetes The Path to Cloud Native

DevOps Course Content

Customizing DAZ Studio

The Idiot s Guide to Quashing MicroServices. Hani Suleiman

Replication. Feb 10, 2016 CPSC 416

5 R1 The one green in the same place so either of these could be green.

(Refer Slide Time: 1:26)

Intermediate Excel 2013

What You Need to Know When Buying a New Computer JackaboutComputers.com

Animator Friendly Rigging Part 1

The Art and Science of Memory Allocation

How to get realistic C-states latency and residency? Vincent Guittot

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.

SECTION 2: Loop Reasoning & HW3 Setup

Code: Slides:

Simple AngularJS thanks to Best Practices

Accelerate at DevOps Speed With Openshift v3. Alessandro Vozza & Samuel Terburg Red Hat

SECTION 2: Loop Reasoning & HW3 Setup

Owncloud scalability and a Nextcloud design for users.

Knative: Building serverless platforms on top of Kubernetes

Background. $VENDOR wasn t sure either, but they were pretty sure it wasn t their code.

Web Host. Choosing a. for Your WordPress Site. What is web hosting, and why do you need it?

SECTION 1: CODE REASONING + VERSION CONTROL

SECTION 1: CODE REASONING + VERSION CONTROL

CSCI 1100L: Topics in Computing Lab Lab 11: Programming with Scratch

Google Drive: Access and organize your files

Question?! Processor comparison!

Cache Coherence Tutorial

Docker A FRAMEWORK FOR DATA INTENSIVE COMPUTING

CSE 390 Lecture 10. Do anything from anywhere tools to free your choice of OS

MOCKING TO FACILITATE UNIT TESTING. Abstract

DevOps Technologies. for Deployment

How do Design a Cluster

The Long Road from Capistrano to Kubernetes

PCS Cloud Solutions. Create highly-available, infinitely-scalable applications and APIs

PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON. Alexander Lichter June 27, 2017

Container Orchestration on Amazon Web Services. Arun

Intro to Github. Jessica Young

Kubernetes 1.9 Features and Future

INTRODUCTION. In this guide, I m going to walk you through the most effective strategies for growing an list in 2016.

Introduction to Mesos and the Datacenter Operating System

How to Leverage Containers to Bolster Security and Performance While Moving to Google Cloud

SECTION 2: HW3 Setup.

SAMPLE CHAPTER. Marko Lukša MANNING

IMPORTANT WORDS AND WHAT THEY MEAN

Intro. Scheme Basics. scm> 5 5. scm>

Sucuri Webinar Transcription

I'm Andy Glover and this is the Java Technical Series of. the developerworks podcasts. My guest is Brian Jakovich. He is the

This book is about using Visual Basic for Applications (VBA), which is a

Overview of Distributed Computing. signin.ritlug.com (pray it works!)

S A M P L E C H A P T E R

Think Small to Scale Big

EPHEMERAL DEVOPS: ADVENTURES IN MANAGING SHORT-LIVED SYSTEMS

The COS 333 Project. Robert M. Dondero, Ph.D. Princeton University

M.A.M System. Final Report. Apper: Jingdong Su Programmer: Jianwei Xu and Yunan Zhao. Wordcount: Mobile Aided Manufacturing

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 08 09/17/2015

Week 5, continued. This is CS50. Harvard University. Fall Cheng Gong

Using GitHub to Share with SparkFun a

Rok: Decentralized storage for the cloud native world

Git. all meaningful operations can be expressed in terms of the rebase command. -Linus Torvalds, 2015

Business Hacks to grow your list with Social Media Marketing

Transcription:

Servers & Developers Julian Nadeau Production Engineer

Provisioning & Orchestration of Servers Setting a server up Packer - one server at a time Chef - all servers at once Containerization What are Containers? A look at Kubernetes Developer Environments Similar to production? Local vs Remote Can containers be used? 2

Servers & Stuff 3

Setting a server up Imagine your job is to setup servers. You want a web-app to run. Install a few dependencies, maybe Ruby, PHP, Node. Get a web server up and running (maybe Nginx or Apache?). Open up a few firewall ports. and Done! This is called an artisanally set up server. In server-land, artisanal is generally not a good idea. 4

Setting a server up (cont) Imagine you need to set that server up again, will you remember how to? Maybe you ll script it (more on this in a moment). Now, imagine that you have 10 servers and for some reason you need to update Ruby on all everything, but this causes some issues with another dependency. Now imagine that with 50 servers, 100 servers, 1000 servers. 5

Server Stats for Shopify 2 500+ DATACENTRES WEB SERVERS 70+ +++ JOB SERVERS DATABASE SERVERS, CACHING SERVERS, LOAD BALANCERS 6

Setting a server up (cont) Cool, so now that we ve established that artisanally crafted servers aren t the best idea, what can we do? Let s script it. Choosing a set of scripts and settings for a server is called a configuration. Applying that configuration is called provisioning. We ll talk about both in the next few slides. 7

8

- Packer is a great tool for managing the initial provisioning of a server, but what if you have a fleet of many servers? - Chef allows you to manage many servers through a centralized Chef Server. The master server tells the provisioning node what scripts and programs it should run, and allows for iteration to happen - The provisioning node checks in on a schedule to see if anything new is needed 9

10

Containerization 1 1

What are containers? Containers are a method of operating system virtualization that allow you to run an application and its dependencies in resource-isolated processes. This means that we can basically group off a system into containers and have many things running at the same time. Without containers, processes can fight for resources (memory, CPU, etc) or run one service per computer. With containers, processes can be pre-allocated a set amount of resources so we can run many per host without the worry of them competing. 12

What are they good for? As mentioned, we can restrict resource usage so we don t have one thing taking everything up Since the containers are pre-built images, we get consistency despite just running the image We have different versions of container images, so if something breaks we can revert to using an older image 13

Kubernetes is a tool from Google that allows us to manage containers without caring too much about the servers. We have a cluster (collection) of nodes (servers) where we run our application. Pods (a set of containers) run selected list of services (database, cache, webserver etc). For example, we may see a simple app run a database container and webserver in the same pod. For those that want a deeper look on their own, this is an abstraction of Borg and Omega in Google s internal container orchestration. 14

Kubernetes is told to run a system as you define it. This means that if a container dies, it will be brought back up somewhere else. It also means that it will kill something that is no longer in your system definition. This means that you no longer need to worry and freak out if a specific server dies as Kubernetes will just give the workload to another server instead. This allows us to treat servers like cattle (aka they re all replaceable and are a means to an end) 15

Developer Environments 1 6

Similar to Production Developer environments are similar to production server provisioning as they have to install and maintain dependencies as well The main difference is that we may need multiple versions of the same dependency depending on the project (i.e. Ruby 2.3.3 vs Ruby 2.4.0, ios 9 vs ios 10, etc). For many cases, a system can only have one version that is active at a time. We also don t know the state of the system as people may have installed custom environment-impacting programs, scripts, profiles, etc This is an example for 2 projects, 3 dependencies, 2 versions per dependency. In reality, there will be many more projects, many more dependencies, and many more versions. 17

18

Local vs Remote Can work offline, therefore can code anywhere (like an airplane) Separate environments are possible (one server per project). Dependencies can clash between projects. Mitigates the dependency hell. Low barrier of entry for text editors and IDEs. You have to have a remote-compatible IDE/text editor and always be online, or be SSHed into a server at all times. Low latency, the file system is local to it is quick to update. File system is not local, so syncing errors can occur 19

Containerizing Dev Environments? We ve been talking a lot about environments conflicting with each other, whether by dependency or resource (cpu, ram, etc) If we could containerize applications and their dependencies, we would be able to solve a lot of these problems. Currently, containerizing makes the code also be separated to a different system (in the container), which means we have to SSH in (giving us the problems of remote developer environments) This is a problem we re currently thinking about, we have not solved it. MiniKube is a potential candidate (let s you run Kubernetes locally) that is showing promise. 20

Thanks! @jules2689 julian@shopify.com