Amazon Web Services revolutionized the software hosting industry by inventing IaaS, Infrastructure-as-a-Service. IaaS offers fundamental pieces of hosted software infrastructure such as a block store, an object store, compute nodes, public-facing load balancers, and messaging. As revolutionary as this was, it was still fairly difficult for a developer or a small startup to build services on top of these fundamental building blocks. For example, AWS was designed for 2-tier web architectures, where a public-facing front-end server would talk directly to one of the AWS's database offerings. Modern web architectures employ multiple layers of servers (middle-tier) between the front-end and database servers, requiring services such as dynamic discovery. Modern web architectures often require other specialized services in the form of configuration, encryption, search, caching, log aggregation, monitoring & alerting, etc... In order to ease this initial burden on developers, several PAAS providers emerged in the early days, such as Heroku, DotCloud, etc... In a few cases, AWS has bridged the gap (e.g. search-as-a-service, EMR, etc...). Netflix is now offering another approach. It has open-sourced its PaaS components in order to allow any developer/startup to build his/their own PaaS.
This talk was originally presented by Sudhir Tonse on the Cloud Track at QCon San Francisco 2013.
3. Agenda
•
PaaS? What is it good for?
•
NetflixOSS -> Build your own PaaS the Netflix Way!
• What you need to build, deploy and operate a Cloud Native set of applications
• Cloud Native Architecture
• Platform Services -> Application Services on top of IaaS
• Platform Libraries -> Application Framework Libraries
• Platform Tools/Operational Utilities -> Helps deploy and manage your
Cloud Apps
4. PaaS? What is it?
Libraries, Tools and Frameworks that enable one to Build, Deploy and
Manage Software Services on Ephemeral, On Demand Virtual
Machines (IaaS)
@stonse
#QConSF
28. STEP 1
Choice A: Bare bones Web Service Template
$git clone https://github.com/Netflix/karyon.git
$cd karyon
$./gradlew clean build
$./gradlew :karyon-examples:hello-netflixoss:jettyRun
Choice B: Full blown Recipe (RSS Reader
Recipe)
$git clone https://github.com/Netflix/recipes-rss.git
$cd recipes-rss
$./gradlew clean build
29. STEP 2
•
Customize your App using .war of previous step as a template
• TIPS (optional)
• Use Ribbon for RPC calls
• Use Hystrix/RxJava for wrapping concurrent calls/RPC calls (Latency/Fault
Tolerance)
30. STEP 3
•
Bake an AMI (Amazon Machine Image) using NetflixOSS Aminator
31. STEP 4
•
Deploy to EC2 using Asgard
Deploy & Manage AWS
Applications/Infrastructure
• TIP: Employ Simian Army to test Resiliency
38. Archaius: Configuration (properties) as a Service
•
Property Driven Development
for (int i=0; I < numRowsProperty.get(); i++){
fetchMovieForRow(i, numMoviePerRowProperty.get());
}
52. Simian Army: Availability/Resiliency as a Service
•
Chaos Monkey
• Kills instances
•
Janitor Monkey
• Clean up unused Resources
•
Conformity Monkey
• Confirms adherence to Best
Practices
•
Others (yet to be open sourced)
• Latency Monkey
• Chaos Kong
• …
58. Takeaways …
•
Cloud Computing and Cloud based Services requires embracing Cloud Native
- Adrian Cockroft (@adrianco)
•
NetflixOSS is here to help!
• You can build your own custom PaaS the Netflix Way!
http://netflix.github.io
Yes, we are Hiring!