00:00:21.199
All right, I think I'm going to go ahead and get started since we're running a little late.
00:00:27.359
Hi everyone, my name is Grant Schofield. If you didn't guess from the big slide, I work at Engine Yard.
00:00:32.559
I've worked with Engine Yard since March after moving on as the primary developer of AD drive.com. I am a support engineer, and that role is a little different at Engine Yard than most places. Support engineering combines the ability to develop and debug Ruby applications with an understanding of systems infrastructure.
00:00:45.120
I am from Oklahoma City, and I always kind of looked down on Texas. However, I went to a gas station, found some really nice beer at 10 p.m., and discovered I could buy until midnight, which is a lot better than what we have in Oklahoma City.
00:00:57.280
You can follow me on Twitter under the handle @scoffield. I want to talk a little bit about the cloud in general first because I think the cloud has taken on this web 2.0 idea. It means a lot of different things to different people now. We have all these different things coming about, but they're really all old ideas. People used to time-share on mainframes and share these systems. We've just taken that idea, applied the internet, and used all these new tricks. Now we have supposedly this OS that's supposed to run completely on the cloud.
00:01:20.560
While we're evolving, I suppose we're also going back to those old ideas. There are a few different types of cloud computing. Software as a service is one of those, and I think that's the one that most people are familiar with, like Google Apps, CRM software on Salesforce.com, and Twitter.
00:01:26.960
From my perspective, the internet is evolving into a service model. Everything we do is online now. There’s also the idea of infrastructure as a service, provided by companies like Rackspace, Cloud, GoGrid, Sun, and Amazon Web Services. These companies provide the basic tools you need to actually do something on the cloud. That’s where we come in, as a platform as a service, similar to Google App Engine. Windows Azure and Salesforce are also getting into that space.
00:02:03.600
Now, let’s talk a bit about the Engine Yard Cloud. The Engineer Cloud is divided into two pricing plans, Solo and Flex, both with the same features. Flex is a beta product right now. The main difference between Solo and Flex is that Solo only allows you to run one instance, whereas Flex allows you to run multiple instances or a cluster that operates on top of AWS. This leverages useful AWS features like elastic block storage and S3 credentials for client access.
00:02:45.280
One of the significant ideas from our development team regarding the cloud is the concept of infrastructure as code. This means having repeatable templates that allow us to click a few buttons and spin up servers that are identical yet customizable. The Engine Yard stack is another key aspect that may set our cloud product apart since our lead developers have extensive experience with Nginx and apply that knowledge to our Cloud product.
00:03:10.040
Now, don’t get caught up in all of the cloud hype. Many people say the cloud is the future, but it’s not going to be the solution for everyone. You need to consider your requirements— if you're doing a high amount of input/output (IO), the cloud can actually be a liability. That's why companies like Facebook and Twitter don't run entirely on the cloud. The cloud will solve some problems effectively but won’t solve all of them. Sometimes, it’s essential to reassess whether the cloud is the right solution, or if adjustments to your application are necessary to leverage your existing tools.
00:04:08.799
In my past, I was a Systems Administrator in Boston, working for a company called ITA Software, where I managed thousands of Linux boxes. I appreciated the tactile aspects of a server or hardware—I could touch them, interact with them physically. However, what I disliked was the bureaucracy of filling out forms and waiting months for hardware approvals. That’s where the idea of instant provisioning comes in. In our modern age, with fast-paced development environments needing numerous servers, our product allows you to instantly provision servers as needed.
00:05:04.960
One of my favorite aspects is how easy deployment has become. When Capistrano was first introduced, we were amazed at how easy deployment turned, and it’s getting even easier with infrastructure as code. This flexibility lets us spin up a test server, run long processes like migrations, and ensure everything's correct before pushing to production, avoiding potential downtime or risks to the live site.
00:06:30.960
Unfortunately, as the industry evolves, there may be fewer needs for System Administrators, as cloud technology simplifies many processes. You no longer need to know all the intricate configurations to get a site up and running optimally. Now we’re going to shift gears and demo some practical aspects of our cloud environment. We’ll use a personal project called Twerkle to illustrate.
00:07:46.599
We have a choice of using Nginx and Passenger for our environment. Currently, I’ve created a staging environment reflecting my application configuration. I’ll be deploying it to our cloud, where the application relies on GitHub for version control. After providing the GitHub URL where my repository is hosted, we’ll configure additional application settings like the Ruby on Rails version.
00:08:46.599
As we proceed with the setup, we’ll need to integrate keys for deploying our application to facilitate the GitHub interaction. This involves checking the GitHub deploy key, ensuring it’s in place to leverage deployment capabilities effectively. Additionally, during instance setup, we can add gems and specific Unix packages, ensuring our environment is tailored to our application’s needs.
00:09:21.360
Once everything is set up, we’ll create instances. In this case, we will opt for three application servers. Since we have multiple application servers, we’ll need a separate database. After booting the configuration, we will see our three application servers coming online alongside the master database. It’s worth noting that our system includes built-in monitoring, providing insights into memory usage, I/O levels, and other critical metrics.
00:10:12.920
Implemented SSL certificates are just a few clicks away, allowing for either self-signed or uploaded certificates. Furthermore, backup tools using Amazon’s elastic block storage system enable incremental snapshots for system recovery as needed. We support Capistrano for deployments and utilize Chef for sophisticated deployment hooks that integrate seamlessly with your codebase.
00:11:02.639
Our deployment capabilities allow for straightforward one-click deployment systems. Here, we are closely monitoring the status and ensuring that our servers are booting in sync, waiting for one another as they come up. Meanwhile, I’ll access another mirror of the environment that I prepared earlier to illustrate a practical deployment scenario.
00:12:02.920
As we move on, I’ll make a minor code adjustment in the Twerkle application and push that update to GitHub. Before we deploy, let’s review the current version of the website. We use the IP address directly due to multiple versions running simultaneously. With the updated code in hand, we will initiate a deployment process.
00:13:14.880
When deploying, any changes that need to occur, such as configurations or SSL certificates, will deploy across application servers without affecting the database. We've utilized HAProxy for load balancing between servers, allowing for effective traffic management during deployments.
00:13:36.680
As our code deployment across the instances is completed, we can verify the successful update on the live site. Additionally, leveraging post-commit hooks from GitHub simplifies the deployment process further, allowing for rapid iterations without needing to access the deployment interface every time.
00:14:12.680
Another feature I find particularly useful is the cloning feature. This allows us to clone an entire environment to test migration processes or specific Rails versions before making changes in production. This feature streamlines environments, providing newfound flexibility and minimizing costs by avoiding unnecessary resource allocation.
00:15:23.200
Scaling can happen in two ways: vertically, which involves increasing resources like CPU or RAM, and horizontally, which means adding instances. The cloud infrastructure adapts well to needs that arise, particularly during traffic surges from viral content or significant mentions in tech news. Adjusting capacity is simple; you can add up to 20 instances, and scaling back down is straightforward as well.
00:16:50.800
When customizing the environment, we leverage Chef for configuration management, providing versatility in tailoring your systems. For instance, using basic Chef recipes allows you to install and configure diverse applications seamlessly. In addition to supporting common platforms like Rails, we also have setups for MongoDB, CouchDB, Redis, and other technologies.
00:18:23.999
With our system, we manage load balancing meticulously to handle failures gracefully by promoting healthy instances to preserve continuity. This reduces downtime and guarantees resiliency within the cloud infrastructure.
00:19:53.999
The service is designed not only for Rails applications but is versatile to integrate other frameworks. Users can manage various application types while simultaneously using their S3 storage for client interactions. Upcoming features will expand this utility, including support for Postgres databases and automatic failovers.
00:21:10.280
We understand the need for efficiency and are dedicated to providing an infrastructure that adapts to user needs. Our commitment is to continuously enhance our offerings, ensuring that fluctuating demands are met with responsive solutions.
00:21:37.239
As we explore the full capabilities of cloud technology, the overarching goal remains clear: facilitate rapid development and deployment, allowing businesses to thrive without the traditional hassle of backend management.
00:22:22.959
Our involvement in the tech community keeps us informed about emerging trends. It ensures our framework aligns well with industry standards. We believe in collaboration and shared knowledge, which benefits everyone in the ecosystem.
00:23:06.960
This collaborative approach brings distinct advantages, especially as we incorporate features that meet client needs. In doing so, we continue to drive the effectiveness of cloud services in supporting diverse applications.
00:25:05.240
As we look ahead, our mission remains focused on enhancing user experience, responsive support, and implementing innovative solutions that keep pace with the growing demands of our clients.
00:26:42.720
Thanks for joining this discussion about cloud technology. I appreciate your engagement and feedback; let’s keep the conversation going about how we can leverage cloud solutions effectively.