Add Buffer case study. Updates to Ancestry and Wink case study. Updates to Case Study index. Sizes fixes from logo images. (#4568)

This commit is contained in:
Kaitlyn Barnard
2017-08-01 11:44:09 -07:00
committed by Andrew Chen
parent bb47b3f43f
commit 487c8d610d
14 changed files with 606 additions and 53 deletions
+16 -26
View File
@@ -1,26 +1,13 @@
---
title: Ancestry Case Study
layout: none
class: gridPage
layout: basic
case_study_styles: true
cid: caseStudies
css: /css/style_ancestry.css
---
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/css/style_ancestry.css">
<title>Ancestry Case Study</title>
</head>
<body>
<div class="banner1">
<h1> CASE STUDY:<img src="http://c.mfcreative.com/i/logo/ancestry-on-dark.svg" class="logo" width="22%" style="margin-bottom:-12px;margin-left:3px;"><br> <div class="subhead">Digging Into the Past With New Technology</div></h1>
<h1> CASE STUDY:<img src="http://c.mfcreative.com/i/logo/ancestry-on-dark.svg" width="22%" style="margin-bottom:-12px;margin-left:3px;"><br> <div class="subhead">Digging Into the Past With New Technology</div></h1>
</div>
@@ -30,6 +17,7 @@ cid: caseStudies
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
@@ -47,10 +35,9 @@ Ancestry, the global leader in family history and consumer genomics, uses sophis
<br>
<h2>Impact</h2>
"Every single product, every decision we make at Ancestry, focuses on delighting our customers with intimate, sometimes life-changing discoveries about themselves and their families," says MacKay. "As the company continues to grow, the increased productivity gains from using Kubernetes has helped Ancestry make customer discoveries faster. With the move to Dockerization for example, instead of taking between 20 to 50 minutes to deploy a new piece of code, we can now deploy in under a minute for much of our code. Weve truly experienced a significant time savings in addition to the various features and benefits from cloud native and Kubernetes-type technologies."
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
@@ -58,6 +45,7 @@ Ancestry, the global leader in family history and consumer genomics, uses sophis
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>It started with a Shaky Leaf.</h2>
@@ -66,6 +54,7 @@ Ancestry, the global leader in family history and consumer genomics, uses sophis
And when it went live smoothly in early 2016, "our deployment time for this service literally was cut down from 50 minutes to 2 or 5 minutes," MacKay adds. "The development team was just thrilled because we're focused on supplying a great experience for our customers. And that means features, it means stability, it means all those things that we need for a first-in-class type operation."<br><br>
The stability of that Shaky Leaf was a signal for MacKay and his team that their decision to embrace cloud native technologies was the right one for the company. With a private data center, Ancestry built its website (which launched in 1996) on hundreds of services and technologies and a traditional deployment methodology. "It worked well for us in the past, but the sum of the legacy systems became quite cumbersome in its processing and was time-consuming," says MacKay. "We were looking for other ways to accelerate, to be more agile in delivering our solutions and our products."
</div>
</section>
<div class="banner3">
<div class="banner3text">
@@ -73,6 +62,7 @@ Ancestry, the global leader in family history and consumer genomics, uses sophis
</div>
</div>
<section class="section3">
<div class="fullcol">
That need led them in 2015 to explore containerization. Ancestry engineers had already been using technology like <a href="https://www.java.com/en/">Java</a> and <a href="https://www.python.org">Python</a> on Linux, so part of the decision was about making the infrastructure more Linux-friendly. They quickly decided that they wanted to go with Docker for containerization, "but it always comes down to the orchestration part of it to make it really work," says MacKay.<br><br>
His team looked at orchestration platforms offered by <a href="https://docs.docker.com/compose/">Docker Compose</a>, <a href="http://mesos.apache.org">Mesos</a> and <a href="https://www.openstack.org/software/">OpenStack</a>, and even started to prototype some homegrown solutions. And then they started hearing rumblings of the imminent release of Kubernetes v1.0. "At the forefront, we were looking at the secret store, so we didn't have to manage that all ourselves, the config maps, the methodology of seamless deployment strategy," he says. "We found that how Kubernetes had done their resources, their types, their labels and just their interface was so much further advanced than the other things we had seen. It was a feature fit."<br><br>
@@ -83,6 +73,7 @@ Ancestry, the global leader in family history and consumer genomics, uses sophis
Their best practices include allowing their developers to deploy into development stage and production, but then controlling the aspects that need governance and auditing, such as secrets. They found that having one namespace per service is useful for achieving that containment of secrets and config maps. And for their needs, having one container per pod makes it easier to manage and to have a smaller unit of deployment.
<br><br>
</div>
</section>
<div class="banner4">
<div class="banner4text">
@@ -92,22 +83,24 @@ Ancestry, the global leader in family history and consumer genomics, uses sophis
</div>
</div>
<section class="section4">
<div class="fullcol">
With that process established, the time spent on deployment was cut down to under a minute for some services. "As programmers, we have what's called REPL: read, evaluate, print, and loop, but with Kubernetes, we have CDEL: compile, deploy, execute, and loop," says MacKay. "It's a very quick loop back and a great benefit to understand that when our services are deployed in production, they're the same as what we tested in the pre-production environments. The approach of cloud native for Ancestry provides us a better ability to scale and to accommodate the business needs as work loads occur."<br><br>
The success of Ancestry's first deployment of the hint system on Kubernetes helped create momentum for greater adoption of the technology. "Engineers like to code, they like to do features, they don't like to sit around waiting for things to be deployed and worrying about scaling up and out and down," says MacKay. "After a while the engineers became our champions. At training sessions, the development teams were always the ones saying, 'Kubernetes saved our time tremendously; it's an enabler; it really is incredible.' Over time, we were able to convince our management that this was a transition that the industry is making and that we needed to be a part of it."<br><br>
A year later, Ancestry has transitioned a good number of applications to Kubernetes. "We have many different services that make up the rich environment that [the website] has from both the DNA side and the family history side," says MacKay. "We have front-end stacks, back-end stacks and back-end processing type stacks that are in the cluster."<br><br>
The company continues to weigh which services it will move forward to Kubernetes, which ones will be kept as is, and which will be replaced in the future and thus don't have to be moved over. MacKay estimates that the company is "approaching halfway on those features that are going forward. We don't have to do a lot of convincing anymore. It's more of an issue of timing with getting product management and engineering staff the knowledge and information that they need."
</div>
</section>
<div class="banner2">
<div class="banner2text">
<div class="banner5">
<div class="banner5text">
"... 'I believe in Kubernetes. I believe in containerization. I think
if we can get there and establish ourselves in that world, we will be further along and far better off being agile and all the things we talk about,
and it'll&nbsp;go&nbsp;forward.'"
</div>
</div>
<section class="section5">
<div class="fullcol">
@@ -121,7 +114,4 @@ He pauses. "So, yeah, I guess you can say I'm an evangelist for Kubernetes," he
</div>
</body>
</html>
</section>
+112
View File
@@ -0,0 +1,112 @@
---
title: Buffer Case Study
layout: basic
case_study_styles: true
cid: caseStudies
css: /css/style_buffer.css
---
<div class="banner1">
<h1>CASE STUDY: <img src="/images/buffer.png" width="18%" style="margin-bottom:-5px;margin-left:10px;"><br>
<div class="subhead">Making Deployments Easy for a Small, Distributed Team</div>
</h1>
</div>
<div class="details">
Company&nbsp;<b>Buffer</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Location &nbsp;<b>Around the World</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Industry &nbsp;<b>Social Media Technology</b>
</div>
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
With a small but fully distributed team of 80 working across almost a dozen time zones, Buffer—which offers social media management to agencies and marketers—was looking to solve its "classic monolithic code base problem," says Architect Dan Farrelly. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as&nbsp;necessary."
</div>
<div class="col2">
<h2>Solution</h2>
Embracing containerization, Buffer moved its infrastructure from Amazon Web Services Elastic Beanstalk to Docker on AWS, orchestrated with&nbsp;Kubernetes.
<br>
<br>
<h2>Impact</h2>
The new system "leveled up our ability with deployment and rolling out new changes," says Farrelly. "Building something on your computer and knowing that its going to work has shortened things up a lot. Our feedback cycles are a lot faster now&nbsp;too."
</div>
</div>
</section>
<div class="banner2">
<div class="banner2text">
"Its amazing that we can use the Kubernetes solution off the shelf with our team. And it just keeps getting better. Before we even know that we need something, its there in the next release or its coming in the next few months."<br><br><span style="font-size:16px;letter-spacing:2px;">- DAN FARRELLY, BUFFER ARCHITECT</span>
</div>
</div>
<section class="section2">
<div class="fullcol">
<h2>Dan Farrelly uses a carpentry analogy to explain the problem his company, <a href="https://buffer.com">Buffer</a>, began having as its team of developers grew over the past few years.</h2>
"If youre building a table by yourself, its fine," the companys architect says. "If you bring in a second person to work on the table, maybe that person can start sanding the legs while youre sanding the top. But when you bring a third or fourth person in, someone should probably work on a different table." Needing to work on more and more different tables led Buffer on a path toward microservices and containerization made possible by Kubernetes.<br><br>
Since around 2012, Buffer had already been using <a href="https://aws.amazon.com/elasticbeanstalk/">Elastic Beanstalk</a>, the orchestration service for deploying infrastructure offered by <a href="https://aws.amazon.com">Amazon Web Services</a>. "We were deploying a single monolithic <a href="http://php.net/manual/en/intro-whatis.php">PHP</a> application, and it was the same application across five or six environments," says Farrelly. "We were very much a product-driven company. It was all about shipping new features quickly and getting things out the door, and if something was not broken, we didnt spend too much time on it. If things were getting a little bit slow, wed maybe use a faster server or just scale up one instance, and it would be good enough. Wed move on."<br><br>
But things came to a head in 2016. With the growing number of committers on staff, Farrelly and Buffers then-CTO, Sunil Sadasivan, decided it was time to re-architect and rethink their infrastructure. "It was a classic monolithic code base problem," says Farrelly.<br><br>Some of the companys team was already successfully using <a href="https://www.docker.com">Docker</a> in their development environment, but the only application running on Docker in production was a marketing website that didnt see real user traffic. They wanted to go further with Docker, and the next step was looking at options for&nbsp;orchestration.
</div>
</section>
<div class="banner3">
<div class="banner3text">
And all the things Kubernetes did well suited Buffers needs. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary," says Farrelly. "We quickly used some scripts to set up a couple of test clusters, we built some small proof-of-concept applications in containers, and we deployed things within an hour. We had very little experience in running containers in production. It was amazing how quickly we could get a handle on it&nbsp;[Kubernetes]."
</div>
</div>
<section class="section3">
<div class="fullcol">
First they considered <a href="https://mesosphere.com">Mesosphere</a>, <a href="https://dcos.io">DC/OS</a> and <a href="https://aws.amazon.com/ecs/">Amazon Elastic Container Service</a> (which their data systems team was already using for some data pipeline jobs). While they were impressed by these offerings, they ultimately went with Kubernetes. "We run on AWS still, so spinning up, creating services and creating load balancers on demand for us without having to configure them manually was a great way for our team to get into this," says Farrelly. "We didnt need to figure out how to configure this or that, especially coming from a former Elastic Beanstalk environment that gave us an automatically-configured load balancer. I really liked Kubernetes controls of the command line. It just took care of ports. It was a lot more flexible. Kubernetes was designed for doing what it does, so it does it very well."<br><br>
And all the things Kubernetes did well suited Buffers needs. "We wanted to have the kind of liquid infrastructure where a developer could create an app and deploy it and scale it horizontally as necessary," says Farrelly. "We quickly used some scripts to set up a couple of test clusters, we built some small proof-of-concept applications in containers, and we deployed things within an hour. We had very little experience in running containers in production. It was amazing how quickly we could get a handle on it [Kubernetes]."<br><br>
Above all, it provided a powerful solution for one of the companys most distinguishing characteristics: their remote team thats spread across a dozen different time zones. "The people with deep knowledge of our infrastructure live in time zones different from our peak traffic time zones, and most of our product engineers live in other places," says Farrelly. "So we really wanted something where anybody could get a grasp of the system early on and utilize it, and not have to worry that the deploy engineer is asleep. Otherwise people would sit around for 12 to 24 hours for something. Its been really cool to see people moving much faster."
<br><br>
With a relatively small engineering team—just 25 people, and only a handful working on infrastructure, with the majority front-end developers—Buffer needed "something robust for them to deploy whatever they wanted," says Farrelly. Before, "it was only a couple of people who knew how to set up everything in the old way. With this system, it was easy to review documentation and get something out extremely quickly. It lowers the bar for us to get everything in production. We don't have the big team to build all these tools or manage the infrastructure like other larger companies&nbsp;might."
</div>
</section>
<div class="banner4">
<div class="banner4text">
"In our old way of working, the feedback loop was a lot longer, and it was delicate because if you deployed something, the risk was high to potentially break something else," Farrelly says. "With the kind of deploys that we built around Kubernetes, we were able to detect bugs and fix them, and get them deployed super fast. The second someone is fixing [a bug], its out the&nbsp;door."
</div>
</div>
<section class="section4">
<div class="fullcol">
To help with this, Buffer developers wrote a deploy bot that wraps the Kubernetes deploy process and can be used by every team. "Before, our data analysts would update, say, a <a href="https://www.python.org">Python</a> analysis script and have to wait for the lead on that team to click the button and deploy it," Farrelly explains. "Now our data analysts can make a change, enter a <a href="https://slack.com">Slack</a> command, /deploy, and it goes out instantly. They dont need to wait on these slow turnaround times. They dont even know where its running; it doesnt matter."
<br><br>
One of the first applications the team built from scratch using Kubernetes was a new image resizing service. As a social media management tool that allows marketing teams to collaborate on posts and send updates across multiple social media profiles and networks, Buffer has to be able to resize photographs as needed to meet the varying limitations of size and format posed by different social networks. "We always had these hacked together solutions," says Farrelly.
<br><br>
To create this new service, one of the senior product engineers was assigned to learn Docker and Kubernetes, then build the service, test it, deploy it and monitor it—which he was able to do relatively quickly. "In our old way of working, the feedback loop was a lot longer, and it was delicate because if you deployed something, the risk was high to potentially break something else," Farrelly says. "With the kind of deploys that we built around Kubernetes, we were able to detect bugs and fix them, and get them deployed super fast. The second someone is fixing [a bug], its out the door."
<br><br>
Plus, unlike with their old system, they could scale things horizontally with one command. "As we rolled it out," Farrelly says, "we could anticipate and just click a button. This allowed us to deal with the demand that our users were placing on the system and easily scale it to handle it."
<br><br>
Another thing they werent able to do before was a canary deploy. This new capability "made us so much more confident in deploying big changes," says Farrelly. "Before, it took a lot of testing, which is still good, but it was also a lot of fingers crossed. And this is something that gets run 800,000 times a day, the core of our business. If it doesnt work, our business doesnt work. In a Kubernetes world, I can do a canary deploy to test it for 1 percent and I can shut it down very quickly if it isnt working. This has leveled up our ability to deploy and roll out new changes quickly while reduce&nbsp;risk."
</div>
</section>
<div class="banner5">
<div class="banner5text">
"If you want to run containers in production, with nearly the power that Google uses internally, this [Kubernetes] is a great way to do that," Farrelly says. "Were a relatively small team thats actually running Kubernetes, and weve never run anything like it before. So its more approachable than you might think. Thats the one big thing that I tell people who are experimenting with it. Pick a couple of things, roll it out, kick the tires on this for a couple of months and see how much it can handle. You start learning a lot this&nbsp;way."
</div>
</div>
<section class="section5">
<div class="fullcol">
By October 2016, 54 percent of Buffers traffic was going through their Kubernetes cluster. "Theres a lot of our legacy functionality that still runs alright, and those parts might move to Kubernetes or stay in our old setup forever," says Farrelly. But the company made the commitment at that time that going forward, "all new development, all new features, will be running on Kubernetes."
<br><br>
The plan for 2017 is to move all the legacy applications to a new Kubernetes cluster, and run everything theyve pulled out of their old infrastructure, plus the new services theyre developing in Kubernetes, on another cluster. "I want to bring all the benefits that weve seen on our early services to everyone on the team," says Farrelly.
<br><br>
<h2>For Buffers engineers, its an exciting process. "Every time were deploying a new service, we need to figure out: OK, whats the architecture? How do these services communicate? Whats the best way to build this service?" Farrelly says. "And then we use the different features that Kubernetes has to glue all the pieces together. Its enabling us to experiment as were learning how to design a service-oriented architecture. Before, we just wouldnt have been able to do it. This is actually giving us a blank white board so we can do whatever we want on it."
</h2>
Part of that blank slate is the flexibility that Kubernetes offers should the time come when Buffer may want or need to change its cloud. "Its cloud agnostic so maybe one day we could switch to Google or somewhere else," Farrelly says. "Were very deep in Amazon but its nice to know we could move away if we need to."
<br><br>
At this point, the team at Buffer cant imagine running their infrastructure any other way—and theyre happy to spread the word. "If you want to run containers in production, with nearly the power that Google uses internally, this [Kubernetes] is a great way to do that," Farrelly says. "Were a relatively small team thats actually running Kubernetes, and weve never run anything like it before. So its more approachable than you might think. Thats the one big thing that I tell people who are experimenting with it. Pick a couple of things, roll it out, kick the tires on this for a couple of months and see how much it can handle. You start learning a lot this&nbsp;way."
<br><br>
</div>
</section>
+9 -1
View File
@@ -14,6 +14,12 @@ cid: caseStudies
<main>
<div class="content">
<div class="case-studies">
<div class="case-study">
<img src="/images/case_studies/buffer.png" alt="Buffer">
<p class="quote">"Its amazing that we can use the Kubernetes solution off the shelf with our team. And it just keeps getting better."</p>
<!--<p class="attrib">— Dan Farrelly, Buffer Architect</p>-->
<a href="/case-studies/buffer/">Read about Buffer</a>
</div>
<div class="case-study">
<img src="/images/case_studies/wink_logo.png" alt="Wink">
<p class="quote">"What you get by adopting CoreOS/Kubernetes is portability, to not be locked in to anyone. You can really make your own fate."</p>
@@ -28,7 +34,7 @@ cid: caseStudies
</div>
<div class="case-study">
<img src="/images/case_studies/golfnow.png" alt="GolfNow">
<p class="quote">"We can move data centers in incredible amounts of time. If you havent come from the Kubernetes world and I tell you this is what Ive been doing, you wouldnt believe me."</p>
<p class="quote">"If you havent come from the Kubernetes world and I tell you this is what Ive been doing, you wouldnt believe me."</p>
<!--<p class="attrib">— Josh Chandler, Lead Architect, Open Platforms at GolfNow</p>-->
<a href="/case-studies/golfnow/">Read about GolfNow</a>
</div>
@@ -47,11 +53,13 @@ cid: caseStudies
<div class="case-study">
<img src="/images/case_studies/ebay.png" alt="eBay">
<p class="quote">Inside eBay's shift to Kubernetes and containers atop OpenStack</p>
<!--<p class="attrib">— None</p>-->
<a href="http://www.nextplatform.com/2015/11/12/inside-ebays-shift-to-kubernetes-and-containers-atop-openstack/">Read about eBay</a>
</div>
<div class="case-study">
<img src="/images/case_studies/box.png" alt="box">
<p class="quote">"Kubernetes has the opportunity to be the new cloud platform. Because its a never-before-seen level of automation and intelligence surrounding infrastructure."</p>
<!--<p class="attrib">— Sam Ghouds, Co-Founder and Services Architect of Box/p>-->
<a href="/case-studies/box/">Read about Box</a>
</div>
</div>
+8 -24
View File
@@ -1,23 +1,13 @@
---
title: WINK Case Study
layout: none
class: gridPage
title: Wink Case Study
layout: basic
case_study_styles: true
cid: caseStudies
css: /css/style_wink.css
---
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/css/style_wink.css">
<title>WINK Case Study</title>
</head>
<body>
<div class="banner1">
<h1>CASE STUDY: <img src="/images/wink_logo.png" class="logo" width="13%" style="margin-bottom:-4px"><br>
<h1>CASE STUDY: <img src="/images/wink_logo.png" width="13%" style="margin-bottom:-4px"><br>
<div class="subhead">Cloud-Native Infrastructure Keeps Your Smart Home Connected</div>
</h1>
</div>
@@ -30,14 +20,12 @@ cid: caseStudies
<hr>
<section class="section1">
<div class="cols">
<div class="col1">
<h2>Challenge</h2>
Building a low-latency, highly reliable infrastructure to serve communications between millions of connected smart-home devices and the companys consumer hubs and mobile app, with an emphasis on horizontal scalability, the ability to encrypt everything quickly and connections that could be easily brought back up if anything went wrong.
<br>
<br><br>
<h2>Solution</h2>
Across-the-board use of a Kubernetes-Docker-CoreOS Container Linux stack.<br><br>
</div>
@@ -46,8 +34,8 @@ cid: caseStudies
<h2>Impact</h2>
"Two of the biggest American retailers [Home Depot and Walmart] are carrying and promoting the brand and the hardware,” Wink Head of Engineering Kit Klein says proudly though he adds that "it really comes with a lot of pressure. Its not a retail situation where you have a lot of tech enthusiasts. These are everyday people who want something that works and have no tolerance for technical excuses.” And thats further testament to how much faith Klein has in the infrastructure that the Wink team has built. With 80 percent of Winks workload running on a unified stack of Kubernetes-Docker-CoreOS, the company has put itself in a position to continually innovate and improve its products and services. Committing to this technology, says Klein, "makes building on top of the infrastructure relatively&nbsp;easy.”
</div>
</div>
</div>
</section>
@@ -59,7 +47,6 @@ cid: caseStudies
<section class="section2">
<div class="fullcol">
<h2>How many people does it take to turn on a light bulb?</h2>
@@ -69,7 +56,6 @@ cid: caseStudies
Wink was incubated within Quirky, a company that developed crowd-sourced inventions. The Wink app was first introduced in 2013, and at the time, it controlled only a few consumer products such as the PivotPower Strip that Quirky produced in collaboration with GE. As smart-home products proliferated, Wink was launched in 2014 in Home Depot stores nationwide. Its first project: a hub that could integrate with smart products from about a dozen brands like Honeywell and Chamberlain. The biggest challenge would be to build the infrastructure to serve all those communications between the hub and the products, with a focus on maximizing reliability and minimizing latency.<br><br>
"When we originally started out, we were moving very fast trying to get the first product to market, the minimum viable product,” says Klein. "Lots of times you go down a path and end up having to backtrack and try different things. But in this particular case, we did a lot of the work up front, which led to us making a really sound decision to deploy it on CoreOS Container Linux. And that was very early in the life of it.”
</div>
</section>
@@ -83,6 +69,7 @@ cid: caseStudies
<div class="fullcol">
Concern number one: Winks products need to connect to consumer devices in peoples homes, behind a firewall. "You dont have an end point like a URL, and you dont even know what ports are open behind that firewall,” Klein explains. "So you essentially need to have this thing wake up and talk to your system and then open real-time, bidirectional communication between the cloud and the device. And its really, really important that its persistent because you want to decrease as much as possible the overhead of sending a message you never know when someone is going to turn on the lights.”<br><br>
With the earliest version of the Wink Hub, when you decided to turn your lights on or off, the request would be sent to the cloud and then executed. Subsequent updates to Winks software enabled local control, cutting latency down to about 10 milliseconds for many devices. But with the need for cloud-enabled integrations of an ever-growing ecosystem of smart home products, low-latency internet connectivity is still a critical consideration.
<br><br>
<h2>"You essentially need to have this thing wake up and talk to your system and then open real-time, bidirectional communication between the cloud and the device. And its really, really important that its persistent...you never know when someone is going to turn on the&nbsp;lights.”</h2>
In addition, Wink had other requirements: horizontal scalability, the ability to encrypt everything quickly, connections that could be easily brought back up if something went wrong. "Looking at this whole structure we started, we decided to make a secure socket-based service,” says Klein. "Weve always used, I would say, some sort of clustering technology to deploy our services and so the decision we came to was, this thing is going to be containerized, running on Docker.”<br><br>
At the time just over two years ago Docker wasnt yet widely used, but as Klein points out, "it was certainly understood by the people who were on the frontier of technology. We started looking at potential technologies that existed. One of the limiting factors was that we needed to deploy multi-port non-http/https services. It wasnt really appropriate for some of the early cluster technology. We liked the project a lot and we ended up using it on other stuff for a while, but initially it was too targeted toward http workloads.”<br><br>
@@ -120,6 +107,3 @@ cid: caseStudies
Wink, which was acquired by Flex in 2015, now controls 2.3 million connected devices in households all over the country. Whats next for the company? A new version of the hub - Wink Hub 2 - hit shelves last November and is being offered for the first time at Walmart stores in addition to Home Depot. "Two of the biggest American retailers are carrying and promoting the brand and the hardware,” Klein says proudly though he adds that "it really comes with a lot of pressure. Its not a retail situation where you have a lot of tech enthusiasts. These are everyday people who want something that works and have no tolerance for technical excuses.” And thats further testament to how much faith Klein has in the infrastructure that the Wink team has have built.<br><br>
Winks engineering team has grown exponentially since its early days, and behind the scenes, Klein is most excited about the machine learning Wink is using. "We built [a system of] containerized small sections of the data pipeline that feed each other and can have multiple outputs,” he says. "Its like data pipelines as microservices.” Again, Klein points to having a unified stack running on CoreOS Container Linux and Kubernetes as the primary driver for the innovations to come. "Youre not reinventing the wheel every time,” he says. "You can just get down to work.” </div>
</section>
</body>
</html>
+2 -2
View File
@@ -56,8 +56,8 @@
min-height: 152px;
}
.case-study:nth-child(3), .case-study:nth-child(4) {
margin-bottom: 0;
.case-study:nth-child(7), .case-study:nth-child(8) {
margin-bottom: 0px;
}
.case-study img {
+459
View File
@@ -0,0 +1,459 @@
.buffer {
width:100%;
}
p {
font-family:"Roboto", sans-serif;
padding:5%;
}
a {
text-decoration:none;
color:#3366ff;
}
body {
margin:0;
background-color:#ffffff !important;
}
footer {
background-color:#ffffff !important;
}
h1 {
font-family:"Roboto", sans-serif;
font-weight:bold;
letter-spacing:0.025em;
font-size:42px;
padding-bottom:0px;
}
.subhead {
font-size:26px;
font-weight:100;
line-height:40px;
padding-bottom:1%;
}
.banner1 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:12%;
padding-bottom:0.5%;
padding-left:9.9%;
font-size:32px;
background: url('/images/CaseStudy_buffer_banner3.jpg');
background-size:100% auto;
background-repeat:no-repeat;
}
.banner2 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:3%;
padding-bottom:3%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background-size:100% auto;
background-color:#666666;
background-repeat:no-repeat;
}
.banner3 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-left:5%;
padding-right:5%;
padding-top:6%;
padding-bottom:6%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background: url('/images/CaseStudy_buffer_banner1.jpg');
background-size:100% auto;
}
.banner4 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background: url('/images/CaseStudy_buffer_banner4.jpg');
background-size:100% auto;
}
.banner5 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:3%;
padding-bottom:3%;
font-size:21px;
letter-spacing:0.03em;
line-height:32px;
float:left;
background-size:100% auto;
background-color:#666666;
background-repeat:no-repeat;
}
.banner2text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:60%;
padding-left:19%;
float:left;
text-align:center;
}
.banner3text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:70%;
padding-left:15%;
text-align:center;
}
.banner4text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:55%;
padding-left:21%;
text-align:center;
}
.banner5text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:60%;
padding-left:19%;
float:left;
text-align:center;
}
h2 {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:24px;
line-height:34px;
color:#3366ff;
}
.quote {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:22px;
line-height:32px;
color:#3366ff;
}
.details {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:18px;
color:#3366ff;
letter-spacing:0.03em;
padding-bottom:1.5%;
padding-top:2%;
padding-left:10%;
}
hr {
border-bottom:0px solid;
width:100%;
opacity:0.5;
color:#aaaaaa;
height:1px;
}
.col1 {
width: 38%;
padding-left:5%;
padding-right:8%;
float:left;
font-family:"Roboto", sans-serif;
font-weight:100;
color:#606060;
line-height:20px;
letter-spacing:0.03em;
font-size:14px;
}
.col2 {
width: 44%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
line-height:20px;
color:#606060;
letter-spacing:0.03em;
font-size:14px;
}
.fullcol {
width:77%;
margin-left:11%;
margin-right:10%;
margin-top:4%;
margin-bottom:6%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
line-height:22px;
color:#606060;
letter-spacing:0.03em;
font-size:14px;
}
.cols {
width:77%;
margin-left:6%;
margin-top:1%;
margin-bottom:4%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
}
h4 {
font-family:"Roboto", sans-serif;
font-weight:400;
letter-spacing:0.9;
font-size:20px;
padding-bottom:0px;
}
@media screen and (max-width: 910px){
h1 {
font-family:"Roboto", sans-serif;
font-weight:bold;
line-height:36px;
letter-spacing:0.03em;
font-size:30px !important;
padding-bottom:0px;
width:80%;
}
.subhead {
font-size:18px;
font-weight:100;
line-height:27px;
}
.details {
font-family:"Roboto", sans-serif;
font-weight:300;
font-size:16px;
color:#3366ff;
letter-spacing:0.03em;
padding-bottom:2%;
line-height:28px;
padding-top:4%;
padding-left:10%;
}
.logo {
width:8%;
}
.col1 {
width: 100%;
padding-left:5%;
padding-right:8%;
float:left;
font-family:"Roboto", sans-serif;
font-weight:300;
color:#606060;
line-height:20px;
letter-spacing:0.03em;
font-size:14px;
}
.col2 {
width: 100%;
padding-left:5%;
padding-top:5%;
padding-bottom:5%;
font-family:"Roboto", sans-serif;
font-weight:300;
float:left;
line-height:20px;
color:#606060;
letter-spacing:0.03em;
font-size:14px;
}
.banner1 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:15%;
padding-bottom:2%;
padding-left:10%;
font-size:18px;
background: url('/images/CaseStudy_buffer_banner3.jpg');
background-size:100% auto;
}
.banner2 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:4%;
padding-bottom:4%;
padding-left:0%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background:none;
background-color:#666666;
}
.banner3 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:80%;
padding-left:15%;
padding-right:10%;
float:left;
background: url('/images/CaseStudy_buffer_banner1.jpg);
}
.banner4 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:5%;
padding-bottom:5%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background: url('/images/CaseStudy_buffer_banner4.jpg');
}
.banner5 {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
padding-top:4%;
padding-bottom:4%;
padding-left:0%;
font-size:18px;
letter-spacing:0.03em;
line-height:24px;
width:100%;
float:left;
background:none;
background-color:#666666;
}
.banner2text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
float:left;
text-align:center;
color:#ffffff;
}
.banner3text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:2%;
padding-right:10%;
padding-top:5%;
padding-bottom:5%;
text-align:center;
}
.banner4text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
text-align:center;
}
.banner5text {
font-family:"Roboto", sans-serif;
font-weight:300;
color:#ffffff;
width:80%;
padding-left:10%;
float:left;
text-align:center;
color:#ffffff;
}
.fullcol {
margin-top:6%;
}
h2 {
line-height:26px;
font-size:18px;
}
.quote {
font-size:18px;
line-height:24px;
}
.logo {
width:35%;
}
@media screen and (max-width: 480px){
.logo {
width:50%;
padding-bottom:5%;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 21 KiB