All files for both new case study pages (#4235)
* Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * fix layout and logo * fix golfnow layout and logo * fix golfnow linkpull/4244/head
|
@ -0,0 +1,127 @@
|
|||
---
|
||||
title: Box Case Study
|
||||
layout: none
|
||||
class: gridPage
|
||||
cid: caseStudies
|
||||
---
|
||||
<!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_box.css">
|
||||
<title>Box Case Study</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<div class="banner1">
|
||||
<h1>CASE STUDY: <img src="/images/box_logo.png" class="logo" width="10%" style="margin-bottom:-6px"><br>
|
||||
<div class="subhead">An Early Adopter Envisions
|
||||
a New Cloud Platform</div>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="details">
|
||||
Company <b>Box</b> Location <b>Redwood City, California</b> Industry <b>Technology</b>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<section class="section1">
|
||||
|
||||
<div class="cols">
|
||||
<div class="col1">
|
||||
|
||||
<h2>Challenge</h2>
|
||||
Founded in 2005, the enterprise content management company allows its more than 50 million users to manage content in the cloud. <a href="https://www.box.com/home">Box</a> was built primarily with bare metal inside the company’s own data centers, with a monolithic PHP code base. As the company was expanding globally, it needed to focus on "how we run our workload across many different cloud infrastructures from bare metal to public cloud," says Sam Ghods, Cofounder and Services Architect of Box. "It’s been a huge challenge because different clouds, especially bare metal, have very different interfaces."
|
||||
<br>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col2">
|
||||
<h2>Solution</h2>
|
||||
Over the past couple of years, Box has been decomposing its infrastructure into microservices, and became an early adopter of, as well as contributor to, <a href="http://kubernetes.io/">Kubernetes</a> container orchestration. Kubernetes, Ghods says, has allowed Box’s developers to "target a universal set of concepts that are portable across all clouds."<br><br>
|
||||
|
||||
<h2>Impact</h2>
|
||||
"Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Today, a new microservice takes less than five days to deploy. And we’re working on getting it to an hour."
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<div class="banner2">
|
||||
<div class="banner2text">
|
||||
"We looked at a lot of different options, but Kubernetes really stood out....the fact that on day one it was designed to run on bare metal just as well as Google Cloud meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as well."<br><br><span style="font-size:15px;letter-spacing:0.08em">- SAM GHOUDS, CO-FOUNDER AND SERVICES ARCHITECT OF BOX</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<section class="section2">
|
||||
|
||||
<div class="fullcol">
|
||||
<h2>In the summer of 2014, Box was feeling the pain of a decade’s worth of hardware and software infrastructure that wasn’t keeping up with the company’s needs.</h2>
|
||||
|
||||
A platform that allows its more than 50 million users (including governments and big businesses like <a href="https://www.ge.com/">General Electric</a>) to manage and share content in the cloud, Box was originally a <a href="http://php.net/">PHP</a> monolith of millions of lines of code built exclusively with bare metal inside of its own data centers. It had already begun to slowly chip away at the monolith, decomposing it into microservices. And "as we’ve been expanding into regions around the globe, and as the public cloud wars have been heating up, we’ve been focusing a lot more on figuring out how we run our workload across many different environments and many different cloud infrastructure providers," says Box Cofounder and Services Architect Sam Ghods. "It’s been a huge challenge thus far because all these different providers, especially bare metal, have very different interfaces and ways in which you work with them."<br><br>
|
||||
Box’s cloud native journey accelerated that June, when Ghods attended <a href="https://www.docker.com/events/dockercon">DockerCon</a>. The company had come to the realization that it could no longer run its applications only off bare metal, and was researching containerizing with Docker, virtualizing with OpenStack, and supporting public cloud.<br><br>
|
||||
At that conference, Google announced the release of its Kubernetes container management system, and Ghods was won over. "We looked at a lot of different options, but Kubernetes really stood out, especially because of the incredibly strong team of <a href="https://research.google.com/pubs/pub43438.html">Borg</a> veterans and the vision of having a completely infrastructure-agnostic way of being able to run cloud software," he says, referencing Google’s internal container orchestrator Borg. "The fact that on day one it was designed to run on bare metal just as well as <a href="https://cloud.google.com/">Google Cloud</a> meant that we could actually migrate to it inside of our data centers, and then use those same tools and concepts to run across public cloud providers as well."<br><br>
|
||||
Another plus: Ghods liked that <a href="kubernetes.io">Kubernetes</a> has a universal set of API objects like pod, service, replica set and deployment object, which created a consistent surface to build tooling against. "Even PaaS layers like <a href="https://www.openshift.com/">OpenShift</a> or <a href="http://deis.io/">Deis</a> that build on top of Kubernetes still treat those objects as first-class principles," he says. "We were excited about having these abstractions shared across the entire ecosystem, which would result in a lot more momentum than we saw in other potential solutions."<br><br>
|
||||
Box deployed Kubernetes in a cluster in a production data center just six months later. Kubernetes was then still pre-beta, on version 0.11. They started small: The very first thing Ghods’s team ran on Kubernetes was a Box API checker that confirms Box is up. "That was just to write and deploy some software to get the whole pipeline functioning," he says. Next came some daemons that process jobs, which was "nice and safe because if they experienced any interruptions, we wouldn’t fail synchronous incoming requests from customers."
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="banner3">
|
||||
<div class="banner3text">
|
||||
"As we’ve been expanding into regions around the globe, and as the public cloud wars have been heating up, we’ve been focusing a lot more on figuring out how we [can have Kubernetes help] run our workload across many different environments and many different cloud infrastructure providers."
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="section3">
|
||||
<div class="fullcol">
|
||||
The first live service, which the team could route to and ask for information, was launched a few months later. At that point, Ghods says, "We were comfortable with the stability of the Kubernetes cluster. We started to port some services over, then we would increase the cluster size and port a few more, and that’s ended up to about 100 servers in each data center that are dedicated purely to Kubernetes. And that’s going to be expanding a lot over the next 12 months, probably to many hundreds if not thousands."<br><br>
|
||||
While observing teams who began to use Kubernetes for their microservices, "we immediately saw an uptick in the number of microservices being released," Ghods notes. "There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices."
|
||||
<br><br><div class="quote">"There was clearly a pent-up demand for a better way of building software through microservices, and the increase in agility helped our developers be more productive and make better architectural choices."</div><br>
|
||||
Ghods reflects that as early adopters, Box had a different journey from what companies experience now. "We were definitely lock step with waiting for certain things to stabilize or features to get released," he says. "In the early days we were doing a lot of contributions [to components such as kubectl apply] and waiting for Kubernetes to release each of them, and then we’d upgrade, contribute more, and go back and forth several times. The entire project took about 18 months from our first real deployment on Kubernetes to having general availability. If we did that exact same thing today, it would probably be no more than six."<br><br>
|
||||
In any case, Box didn’t have to make too many modifications to Kubernetes for it to work for the company. "The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing (and often legacy) infrastructure," says Ghods, "such as upgrading our base operating system from RHEL6 to RHEL7 or integrating it into <a href="https://www.nagios.org/">Nagios</a>, our monitoring infrastructure. But overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and we’ve been running it very successfully on our bare metal infrastructure."<br><br>
|
||||
Perhaps the bigger challenge for Box was a cultural one. "Kubernetes, and cloud native in general, represents a pretty big paradigm shift, and it’s not very incremental," Ghods says. "We’re essentially making this pitch that Kubernetes is going to solve everything because it does things the right way and everything is just suddenly better. But it’s important to keep in mind that it’s not nearly as proven as many other solutions out there. You can’t say how long this or that company took to do it because there just aren’t that many yet. Our team had to really fight for resources because our project was a bit of a moonshot."
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="banner4">
|
||||
<div class="banner4text">
|
||||
"The vast majority of the work our team has done to implement Kubernetes at Box has been making it work inside of our existing [and often legacy] infrastructure....overall Kubernetes has been remarkably flexible with fitting into many of our constraints, and we’ve been running it very successfully on our bare metal infrastructure."
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="section4">
|
||||
<div class="fullcol">
|
||||
Having learned from experience, Ghods offers these two pieces of advice for companies going through similar challenges:
|
||||
<h2>1. Deliver early and often.</h2> Service discovery was a huge problem for Box, and the team had to decide whether to build an interim solution or wait for Kubernetes to natively satisfy Box’s unique requirements. After much debate, "we just started focusing on delivering something that works, and then dealing with potentially migrating to a more native solution later," Ghods says. "The above-all-else target for the team should always be to serve real production use cases on the infrastructure, no matter how trivial. This helps keep the momentum going both for the team itself and for the organizational perception of the project." </br></br>
|
||||
<h2>2. Keep an open mind about what your company has to abstract away from developers and what it doesn’t.</h2> Early on, the team built an abstraction on top of Docker files to help ensure that images had the right security updates.
|
||||
This turned out to be superfluous work, since container images are considered immutable and you can easily scan them post-build to ensure they do not contain vulnerabilities. Because managing infrastructure through containerization is such a discontinuous leap, it’s better to start by interacting directly with the native tools and learning their unique advantages and caveats. An abstraction should be built only after a practical need for it arises.</br></br>
|
||||
In the end, the impact has been powerful. "Before Kubernetes," Ghods says, "our infrastructure was so antiquated it was taking us more than six months to deploy a new microservice. Now a new microservice takes less than five days to deploy. And we’re working on getting it to an hour. Granted, much of that six months was due to how broken our systems were, but bare metal is intrinsically a difficult platform to support unless you have a system like Kubernetes to help manage it."</br></br>
|
||||
By Ghods’s estimate, Box is still several years away from his goal of being a 90-plus percent Kubernetes shop. "We’re very far along on having a mission-critical, stable Kubernetes deployment that provides a lot of value," he says. "Right now about five percent of all of our compute runs on Kubernetes, and I think in the next six months we’ll likely be between 20 to 50 percent. We’re working hard on enabling all stateless service use cases, and shift our focus to stateful services after that."
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="banner5">
|
||||
<div class="banner5text">
|
||||
"Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. '...because it’s a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure.'"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="section5">
|
||||
<div class="fullcol">
|
||||
In fact, that’s what he envisions across the industry: Ghods predicts that Kubernetes has the opportunity to be the new cloud platform. Kubernetes provides an API consistent across different cloud platforms including bare metal, and "I don’t think people have seen the full potential of what’s possible when you can program against one single interface," he says. "The same way <a href="https://aws.amazon.com/">AWS</a> changed infrastructure so that you don’t have to think about servers or cabinets or networking equipment anymore, Kubernetes enables you to focus exclusively on the containers that you’re running, which is pretty exciting. That’s the vision."</br></br>
|
||||
Ghods points to projects that are already in development or recently released for Kubernetes as a cloud platform: cluster federation, the Dashboard UI, and <a href="https://coreos.com/">CoreOS</a>’s etcd operator. "I honestly believe it’s the most exciting thing I’ve seen in cloud infrastructure," he says, "because it’s a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure."</br></br>
|
||||
Box, with its early decision to use bare metal, embarked on its Kubernetes journey out of necessity. But Ghods says that even if companies don’t have to be agnostic about cloud providers today, Kubernetes may soon become the industry standard, as more and more tooling and extensions are built around the API.</br></br>
|
||||
"The same way it doesn’t make sense to deviate from Linux because it’s such a standard," Ghods says, "I think Kubernetes is going down the same path. It is still early days—the documentation still needs work and the user experience for writing and publishing specs to the Kubernetes clusters is still rough. When you’re on the cutting edge you can expect to bleed a little. But the bottom line is, this is where the industry is going. Three to five years from now it’s really going to be shocking if you run your infrastructure any other way."
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,138 @@
|
|||
---
|
||||
title: GolfNow Case Study
|
||||
layout: none
|
||||
class: gridPage
|
||||
cid: caseStudies
|
||||
---
|
||||
<!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_golfnow.css">
|
||||
<title>GolfNow Case Study</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="banner1">
|
||||
<h1>CASE STUDY: <img src="/images/golfnow_logo.png" class="logo" width="20%" style="margin-bottom:-6px"><br>
|
||||
<div class="subhead">Saving Time and Money with Cloud Native Infrastructure</div>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="details">
|
||||
Company <b>GolfNow</b> Location <b>Orlando, Florida</b> Industry <b>Golf Industry Technology and Services Provider</b>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<section class="section1">
|
||||
<div class="cols">
|
||||
<div class="col1">
|
||||
|
||||
<h2>Challenge</h2>
|
||||
A member of the <a href="http://www.nbcunicareers.com/our-businesses/nbc-sports-group">NBC Sports Group</a>, <a href="https://www.golfnow.com/">GolfNow</a> is the golf industry’s technology and services leader, managing 10 different products, as well as the largest e-commerce tee time marketplace in the world. As its business began expanding rapidly and globally, GolfNow’s monolithic application became problematic. "We kept growing our infrastructure vertically rather than horizontally, and the cost of doing business became problematic," says Sheriff Mohamed, GolfNow’s Director, Architecture. "We wanted the ability to more easily expand globally."
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<div class="col2">
|
||||
<h2>Solution</h2>
|
||||
Turning to microservices and containerization, GolfNow began moving its applications and databases from third-party services to its own clusters running on <a href="https://www.docker.com/">Docker</a> and <a href="http://kubernetes.io/">Kubernetes.</a><br><br>
|
||||
|
||||
<h2>Impact</h2>
|
||||
The results were immediate. While maintaining the same capacity—and beyond, during peak periods—GolfNow saw its infrastructure costs for the first application virtually cut in half.
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<div class="banner2">
|
||||
<div class="banner2text">
|
||||
"With our growth we obviously needed to expand our infrastructure, and we kept growing vertically rather than horizontally. We were basically wasting money and doubling the cost of our infrastructure."<br><br><span style="font-size:15px;letter-spacing:0.08em">- SHERIFF MOHAMED, DIRECTOR, ARCHITECTURE AT GOLFNOW</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="section2">
|
||||
<div class="fullcol">
|
||||
<h2>It’s not every day that you can say you’ve slashed an operating expense by half.</h2>
|
||||
|
||||
But Sheriff Mohamed and Josh Chandler did just that when they helped lead their company, <a href="https://www.golfnow.com/">GolfNow</a>, on a journey from a monolithic to a containerized, cloud native infrastructure managed by Kubernetes.
|
||||
<br> <br>
|
||||
A top-performing business within the NBC Sports Group, GolfNow is a technology and services company with the largest tee time marketplace in the world. GolfNow serves 5 million active golfers across 10 different products. In recent years, the business had grown so fast that the infrastructure supporting their giant monolithic application (written in C#.NET and backed by SQL Server database management system) could not keep up. "With our growth we obviously needed to expand our infrastructure, and we kept growing vertically rather than horizontally," says Sheriff, GolfNow’s Director, Architecture. "Our costs were growing exponentially. And on top of that, we had to build a Disaster Recovery (DR) environment, which then meant we’d have to copy exactly what we had in our original data center to another data center that was just the standby. We were basically wasting money and doubling the cost of our infrastructure."
|
||||
<br> <br>
|
||||
In moving just the first of GolfNow’s important applications—a booking engine for golf courses and B2B marketing platform—from third-party services to their own Kubernetes environment, "our bill went down drastically," says Sheriff.
|
||||
<br> <br>
|
||||
The path to those stellar results began in late 2014. In order to support GolfNow’s global growth, the team decided that the company needed to have multiple data centers and the ability to quickly and easily re-route traffic as needed. "From there we knew that we needed to go in a direction of breaking things apart, microservices, and containerization," says Sheriff. "At the time we were trying to get away from <a href="https://www.microsoft.com/net">C#.NET</a> and <a href="https://www.microsoft.com/en-cy/sql-server/sql-server-2016">SQL Server</a> since it didn’t run very well on Linux, where everything container was running smoothly."
|
||||
<br> <br>
|
||||
To that end, the team shifted to working with <a href="https://nodejs.org/">Node.js</a>, the open-source, cross-platform JavaScript runtime environment for developing tools and applications, and <a href="https://www.mongodb.com/">MongoDB</a>, the open-source database program. At the time, <ahref="https://www.docker.com/">Docker</a>, the platform for deploying applications in containers, was still new. But once the team began experimenting with it, Sheriff says, "we realized that was the way we wanted to go, especially since that’s the way the industry is heading."
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="banner3">
|
||||
<div class="banner3text">
|
||||
"The team migrated the rest of the application into their Kubernetes cluster. And the impact was immediate: On top of cutting monthly costs by a large percentage, says Sheriff, 'Running at the same capacity and during our peak time, we were able to horizontally grow. Since we were using our VMs more efficiently with containers, we didn’t have to pay extra money at all.'"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="section3">
|
||||
<div class="fullcol">
|
||||
GolfNow’s dev team ran an "internal, low-key" proof of concept and were won over. "We really liked how easy it was to be able to pass containers around to each other and have them up and running in no time, exactly the way it was running on my machine," says Sheriff. "Because that is always the biggest gripe that Ops has with developers, right? ‘It worked on my machine!’ But then we started getting to the point of, ‘How do we make sure that these things stay up and running?’" <br><br>
|
||||
That led the team on a quest to find the right orchestration system for the company’s needs. Sheriff says the first few options they tried were either too heavy or "didn’t feel quite right." In late summer 2015, they discovered the just-released <a href="http://kubernetes.io/">Kubernetes</a>, which Sheriff immediately liked for its ease of use. "We did another proof of concept," he says, "and Kubernetes won because of the fact that the community backing was there, built on top of what Google had already done."
|
||||
<br><br>
|
||||
But before they could go with Kubernetes, <a href="http://www.nbc.com/">NBC</a>, GolfNow’s parent company, also asked them to comparison shop with another company. Sheriff and his team liked the competing company’s platform user interface, but didn’t like that its platform would not allow containers to run natively on Docker. With no clear decision in sight, Sheriff’s VP at GolfNow, Steve McElwee, set up a three-month trial during which a GolfNow team (consisting of Sheriff and Josh, who’s now Lead Architect, Open Platforms) would build out a Kubernetes environment, and a large NBC team would build out one with the other company’s platform.
|
||||
<br><br>
|
||||
"We spun up the cluster and we tried to get everything to run the way we wanted it to run," Sheriff says. "The biggest thing that we took away from it is that not only did we want our applications to run within Kubernetes and Docker, we also wanted our databases to run there. We literally wanted our entire infrastructure to run within Kubernetes."
|
||||
<br><br>
|
||||
At the time there was nothing in the community to help them get Kafka and MongoDB clusters running within a Kubernetes and Docker environment, so Sheriff and Josh figured it out on their own, taking a full month to get it right. "Everything started rolling from there," Sheriff says. "We were able to get all our applications connected, and we finished our side of the proof of concept a month in advance. My VP was like, ‘Alright, it’s over. Kubernetes wins.’"
|
||||
<br><br>
|
||||
The next step, beginning in January 2016, was getting everything working in production. The team focused first on one application that was already written in Node.js and MongoDB. A booking engine for golf courses and B2B marketing platform, the application was already going in the microservice direction but wasn’t quite finished yet. At the time, it was running in <a href="https://devcenter.heroku.com/articles/mongohq">Heroku Compose</a> and other third-party services—resulting in a large monthly bill.
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="banner4">
|
||||
<div class="banner4text">
|
||||
"'The time I spent actually moving the applications was under 30 seconds! We can move data centers in just incredible amounts of time. If you haven’t come from the Kubernetes world you wouldn’t believe me.' Sheriff puts it in these terms: 'Before Kubernetes I wasn’t sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, I’ve been sleeping at night.'"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="section4">
|
||||
<div class="fullcol">
|
||||
"The goal was to take all of that out and put it within this new platform we’ve created with Kubernetes on <a href="https://cloud.google.com/compute/">Google Compute Engine (GCE)</a>," says Sheriff. "So we ended up building piece by piece, in parallel, what was out in Heroku and Compose, in our Kubernetes cluster. Then, literally, just switched configs in the background. So in Heroku we had the app running hitting a Compose database. We’d take the config, change it and make it hit the database that was running in our cluster."
|
||||
<br><br>
|
||||
Using this procedure, they were able to migrate piecemeal, without any downtime. The first migration was done during off hours, but to test the limits, the team migrated the second database in the middle of the day, when lots of users were running the application. "We did it," Sheriff says, "and again it was successful. Nobody noticed."
|
||||
<br><br>
|
||||
After three weeks of monitoring to make sure everything was running stable, the team migrated the rest of the application into their Kubernetes cluster. And the impact was immediate: On top of cutting monthly costs by a large percentage, says Sheriff, "Running at the same capacity and during our peak time, we were able to horizontally grow. Since we were using our VMs more efficiently with containers, we didn’t have to pay extra money at all."
|
||||
<br><br>
|
||||
Not only were they saving money, but they were also saving time. "I had a meeting this morning about migrating some applications from one cluster to another," says Josh. "I spent about 2 hours explaining the process. The time I spent actually moving the applications was under 30 seconds! We can move data centers in just incredible amounts of time. If you haven’t come from the Kubernetes world you wouldn’t believe me." Sheriff puts it in these terms: "Before Kubernetes I wasn’t sleeping at night, literally. I was woken up all the time, because things were down. After Kubernetes, I’ve been sleeping at night."
|
||||
<br><br>
|
||||
A small percentage of the applications on GolfNow have been migrated over to the Kubernetes environment. "Our Core Team is rewriting a lot of the .NET applications into <a href="https://www.microsoft.com/net/core">.NET Core</a> [which is compatible with Linux and Docker] so that we can run them within containers," says Sheriff.
|
||||
<br><br>
|
||||
Looking ahead, Sheriff and his team want to spend 2017 continuing to build a whole platform around Kubernetes with <a href="https://github.com/drone/drone">Drone</a>, an open-source continuous delivery platform, to make it more developer-centric. "Now they’re able to manage configuration, they’re able to manage their deployments and things like that, making all these subteams that are now creating all these microservices, be self sufficient," he says. "So it can pull us away from applications and allow us to just make sure the cluster is running and healthy, and then actually migrate that over to our Ops team."
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="banner5">
|
||||
<div class="banner5text">
|
||||
"Having gone from complete newbies to production-ready in three months, the GolfNow team is eager to encourage other companies to follow their lead. 'This is The Six Million Dollar Man of the cloud right now,' adds Josh. 'Just try it out, watch it happen. I feel like the proof is in the pudding when you look at these kinds of application stacks. They’re faster, they’re more resilient.'"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="section5">
|
||||
<div class="fullcol">
|
||||
And long-term, Sheriff has an even bigger goal for getting more people into the Kubernetes fold. "We’re actually trying to make this platform generic enough so that any of our sister companies can use it if they wish," he says. "Most definitely I think it can be used as a model. I think the way we migrated into it, the way we built it out, are all ways that I think other companies can learn from, and should not be afraid of."
|
||||
<br><br>
|
||||
The GolfNow team is also giving back to the Kubernetes community by open-sourcing a bot framework that Josh built. "We noticed that the dashboard user interface is actually moving a lot faster than when we started," says Sheriff. "However we realized what we needed was something that’s more of a bot that really helps us administer Kubernetes as a whole through Slack." Josh explains: "With the Kubernetes-Slack integration, you can essentially hook into a cluster and the issue commands and edit configurations. We’ve tried to simplify the security configuration as much as possible. We hope this will be our major thank you to Kubernetes, for everything you’ve given us."
|
||||
<br><br>
|
||||
Having gone from complete newbies to production-ready in three months, the GolfNow team is eager to encourage other companies to follow their lead. The lessons they’ve learned: "You’ve got to have buy-in from your boss," says Sheriff. "Another big deal is having two to three people dedicated to this type of endeavor. You can’t have people who are half in, half out." And if you don’t have buy-in from the get go, proving it out will get you there.
|
||||
<br><br>
|
||||
"This is The Six Million Dollar Man of the cloud right now," adds Josh. "Just try it out, watch it happen. I feel like the proof is in the pudding when you look at these kinds of application stacks. They’re faster, they’re more resilient."
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -14,17 +14,23 @@ cid: caseStudies
|
|||
<main>
|
||||
<div class="content">
|
||||
<div class="case-studies">
|
||||
<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 haven’t come from the Kubernetes world and I tell you this is what I’ve been doing, you wouldn’t 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>
|
||||
<div class="case-study">
|
||||
<img src="/images/case_studies/pearson.png" alt="Pearson">
|
||||
<p class="quote">"We chose Kubernetes because of its flexibility, ease of management and the way it improves our engineers' productivity."</p>
|
||||
<!--<p class="attrib">— Chris Jackson, Director for Cloud Product Engineering, Pearson</p>-->
|
||||
<a href="./pearson/">Read about Pearson</a>
|
||||
<a href="/case-studies/pearson/">Read about Pearson</a>
|
||||
</div>
|
||||
<div class="case-study">
|
||||
<img src="/images/case_studies/wikimedia.png" alt="Wikimedia">
|
||||
<p class="quote">"With Kubernetes, we're simplifying our environment and making it easier for developers to build the tools that make wikis run better."</p>
|
||||
<!--<p class="attrib">— Yuvi Panda, Operations Engineer, Wikimedia Foundation</p>-->
|
||||
<a href="./wikimedia/">Read about Wikimedia</a>
|
||||
<a href="/case-studies/wikimedia/">Read about Wikimedia</a>
|
||||
</div>
|
||||
<div class="case-study">
|
||||
<img src="/images/case_studies/ebay.png" alt="eBay">
|
||||
|
@ -33,8 +39,8 @@ cid: caseStudies
|
|||
</div>
|
||||
<div class="case-study">
|
||||
<img src="/images/case_studies/box.png" alt="box">
|
||||
<p class="quote">Kubernetes at Box: Microservices at Maximum Velocity</p>
|
||||
<a href="https://blog.box.com/blog/kubernetes-box-microservices-maximum-velocity/">Read about Box</a>
|
||||
<p class="quote">"Kubernetes has the opportunity to be the new cloud platform. Because it’s a never-before-seen level of automation and intelligence surrounding infrastructure that is portable and agnostic to every way you can run your infrastructure."</p>
|
||||
<a href="/case-studies/box/">Read about Box</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -82,8 +88,8 @@ cid: caseStudies
|
|||
<a target="_blank" href="https://cloud.google.com/customers/philips/"><img src="/images/case_studies/philips_logo.png" alt="Philips"></a>
|
||||
<a target="_blank" href="https://youtu.be/EC_ZRLsw58M"><img src="/images/case_studies/buffer_logo.png" alt="buffer"></a>
|
||||
<a target="_blank" href="https://youtu.be/lmeFkH-rHII"><img src="/images/case_studies/comcast_logo.png" alt="Comcast"></a>
|
||||
<a href="./wikimedia/"><img src="/images/case_studies/wikimedia_logo.png" alt="Wikimedia"></a>
|
||||
<a href="./pearson/"><img src="/images/case_studies/pearson_logo.png" alt="Pearson"></a>
|
||||
<a href="/case-studies/wikimedia/"><img src="/images/case_studies/wikimedia_logo.png" alt="Wikimedia"></a>
|
||||
<a href="/case-studies/pearson/"><img src="/images/case_studies/pearson_logo.png" alt="Pearson"></a>
|
||||
<a target="_blank" href="#" onclick="event.preventDefault(); kub.showVideo()"><img src="/images/case_studies/zulily_logo.png" alt="zulily"></a>
|
||||
<a target="_blank" href="http://www.nextplatform.com/2015/11/12/inside-ebays-shift-to-kubernetes-and-containers-atop-openstack/"><img src="/images/case_studies/ebay_logo.png" alt="Ebay"></a>
|
||||
<a target="_blank" href="https://docs.google.com/a/google.com/forms/d/e/1FAIpQLScuI7Ye3VQHQTwBASrgkjQDSS5TP0g3AXfFhwSM9YpHgxRKFA/viewform" class="tell-your-story"><img src="/images/case_studies/story.png" alt="Tell your story"></a>
|
||||
|
|
|
@ -0,0 +1,453 @@
|
|||
#caseStudyTitle {
|
||||
margin-top: 1em !important;
|
||||
font-family:"Roboto", sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
|
||||
background-color:#ffffff;
|
||||
}
|
||||
|
||||
p {
|
||||
font-family:"Roboto", sans-serif;
|
||||
padding:5%;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration:none;
|
||||
color:#3366ff;
|
||||
}
|
||||
|
||||
body {
|
||||
margin:0;
|
||||
|
||||
}
|
||||
|
||||
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_box_banner1.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-top:5%;
|
||||
padding-bottom:5%;
|
||||
font-size:21px;
|
||||
letter-spacing:0.03em;
|
||||
line-height:32px;
|
||||
float:left;
|
||||
background: url('/images/CaseStudy_box_banner3.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_box_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:55%;
|
||||
padding-left:21%;
|
||||
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_box_banner1.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:100%;
|
||||
float:left;
|
||||
background: url('/images/CaseStudy_box_banner3.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_box_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;
|
||||
}
|
||||
|
||||
.banner4text {
|
||||
font-family:"Roboto", sans-serif;
|
||||
font-weight:300;
|
||||
color:#ffffff;
|
||||
width:80%;
|
||||
padding-left:10%;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.banner3text {
|
||||
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:15%;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 480px){
|
||||
|
||||
.logo {
|
||||
width:22%;
|
||||
padding-bottom:2%;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,454 @@
|
|||
#caseStudyTitle {
|
||||
margin-top: 1em !important;
|
||||
font-family:"Roboto", sans-serif;
|
||||
}
|
||||
|
||||
p {
|
||||
font-family:"Roboto", sans-serif;
|
||||
padding:5%;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration:none;
|
||||
color:#3366ff;
|
||||
}
|
||||
|
||||
body {
|
||||
margin:0;
|
||||
|
||||
}
|
||||
|
||||
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_golfnow_banner1.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_golfnow_banner3.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_golfnow_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_golfnow_banner1.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_golfnow_banner3.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_golfnow_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%;
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 140 KiB |
After Width: | Height: | Size: 226 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 23 KiB |