00:00:21.279
My name is Dave McCrory, and I work for VMware with the Cloud Foundry group.
00:00:26.560
I'm going to start from a very high level of what Cloud Foundry is and go all the way deep down into how it actually works. At the end, I'll take some questions. I'm betting you guys will have some.
00:00:38.079
If you haven't heard of what Cloud Foundry is or anything else, just bear with me through the first set of slides, and all of that will be explained. If you do know about it, you'll find out a lot more than you knew before.
00:01:03.280
When you start coding, you typically begin with an idea, write some initial code, and refine that idea. Eventually, you produce a suitable version of your code that you want to turn into a product or an application. In your app, you will want to deploy it.
00:01:27.799
Deploying apps the old way typically involved a lot of complicated steps, especially for larger applications. You had to configure an app server, a database, and deal with various complexities. As you scaled your app, the configuration complexity also increased. However, deploying apps with Cloud Foundry means you only have to type a few commands.
00:02:04.719
For example, deploying a traditional three-tier web app with Cloud Foundry is much simpler than the usual lengthy process. With Cloud Foundry, you can easily scale your application to manage a larger load without having to reconfigure all the components like load balancers, routers, or database servers.
00:03:08.560
Here's an example of a scaled multi-node distributed app. It showcases components like RabbitMQ, which is a messaging solution, Redis, a popular in-memory key-value store, MySQL, and MongoDB. The previous method of configuring these applications could take weeks, resulting in significant complexity even with scripted deployment tools.
00:03:56.080
With Cloud Foundry, deploying complex configurations can be done with just a few simple commands. The commands are easy to remember and illustrate how you would deploy the two parts of your app, setting the number of instances for both the front end and back end, creating the necessary services, and binding them properly.
00:05:31.120
So, what really is Cloud Foundry, and why is it significant? Cloud Foundry is a hosted service available at cloudfoundry.com, where you can sign up and start pushing applications with various languages, including Java, Spring Ruby on Rails, Sinatra, and Node.js. This allows you to use multiple frameworks in the same account.
00:06:01.600
While we're in beta, you can consume up to two gigabytes of memory for free, with generous CPU capabilities. Importantly, services like Redis do not count against that memory limit. The dot-com site is a live version of the Cloud Foundry project, which is also open-source under Apache 2.
00:06:34.240
Most of the Cloud Foundry code is written in Ruby, with a few exceptions like EventMachine. You can grab the code from the repository to deploy your own instances behind your firewall. We're working on an offering called the Micro Cloud, allowing you to instantiate Cloud Foundry inside a virtual machine quickly, making it easy to deploy applications.
00:07:44.720
Going deeper, let's explore the developer-visible architecture of Cloud Foundry and how it operates. Key concepts include applications themselves, which encompass your code, libraries, and necessary instances to run the app. Instantiating your code involves managing how many instances run, and you can dynamically scale them while your app is live.
00:08:09.840
In addition, apps can be mapped to unique URLs, allowing for seamless hot migration between old and new code, proving powerful for maintaining site functionality even during updates. Cloud Foundry facilitates different services like MongoDB, MySQL, Redis, and RabbitMQ, with plans to expand to additional services.
00:09:08.480
A critical philosophy in Cloud Foundry design is to externalize state information, avoiding local persistence in your app's logic. This practice underpins a scalable architecture, enhancing fault tolerance and making it easier to manage failure scenarios.
00:09:59.040
From a high-level perspective, Cloud Foundry abstracts the underlying infrastructure, whether virtual or physical. This allows developers to focus on building applications without worrying about the specifics of the infrastructure.
00:11:01.760
Delving into the details of Cloud Foundry, when you push code up, several components, including load balancers, routers, and the Cloud Controller, facilitate the process. The communication operates through JSON messages, triggering various actions while maintaining service health and resource management.
00:11:46.400
Components within Cloud Foundry collaborate closely. The load balancer is based on NGINX, which handles traffic efficiently, ensuring high performance without the pitfalls of traditional hardware balancers. All layers in Cloud Foundry's architecture are horizontally scalable by design, facilitating seamless traffic management.
00:13:25.280
The routers manage traffic flow, mapping requests to application instances. Depending on the mode in which Deas operate, process isolation is maintained in multi-tenant mode, while single-tenant mode provides flexibility for isolated applications.
00:14:10.280
The Cloud Controller serves as the controlling entity managing state changes in the application environment, sending commands to be executed. Services like MySQL and Redis offer extensive functionality as external resources that applications can utilize.
00:15:14.320
The health manager ensures system consistency by tracking all events on the NATS message bus. When applications are pushed, the integrity of the deployment process is validated, allowing ongoing oversight of application and service states.
00:16:38.320
When you push your Sinatra app to Cloud Foundry, the client breaks down the application into manageable parts, creates a manifest, and sends it to the Cloud Controller. This smart approach minimizes unnecessary data transfer, ensuring efficient deployment of revised applications.
00:17:58.640
Once the application is processed, a complete app package is built based on the dependencies required to run it. The first DEA capable of running the required runtime will receive the app package to bootstrap it, while the router facilitates connectivity to the relevant application instance.
00:19:28.720
Scaling an application is straightforward with Cloud Foundry. You can easily adjust the number of instances for your application, triggering additional DEA requests to distribute the load evenly, promoting a strong balance between resource management and application performance.
00:20:53.280
At this point, I will take questions you might have. Remember, all internal communications within NATS are handled through structured JSON messages, helping to preserve clarity and efficiency.
00:22:06.640
If you have questions about Cloud Foundry's infrastructure or services, I can thoroughly explain our roadmap for new service integrations or details regarding existing ones. We aim to keep our code fully transparent, enabling seamless accessibility for developers.
00:23:57.760
I appreciate your participation in this session. Please feel free to approach me for further details or to discuss any specific ideas or questions regarding Cloud Foundry's capabilities.