Why Apache Stratos is the Preferred Choice in the PaaS Space
Apache Stratos is a highly-extensible PaaS framework that helps to run Apache Tomcat, PHP, and MySQL applications, and can be extended to support many more environments on all major cloud infrastructures. For developers, Stratos provides a cloud-based environment for developing, testing, and running scalable applications. IT providers benefit from high utilization rates, automated resource management, and platform-wide insights, including monitoring and billing
If you're exploring a PaaS offering to scale your business, your evaluation needs to be carried out carefully given that there are many PaaS offerings in the market
Important factors that need to be considered
- True community ecosystem
- Open extensible architecture
- True flexibility for custom services
- Multi-factored auto scaling
- Scalable dynamic load balancing
- Capability of controlling IaaS resources
- Logging, metering and monitoring
- Cloud bursting
True community ecosystem
Apache Stratos is the only open community controlled open-source PaaS offering. The Apache community is based on participation and meritocracy instead of financial sponsorship. In the Apache community meritocratic process, known as "The Apache Way," more than 400 individual members and 3,500 committers successfully collaborate to develop freely-available, enterprise-grade software, benefiting millions of users worldwide. The Apache Software Foundation was established in 1999; the all-volunteer Foundation oversees more than 170 leading open source projects, including Apache HTTP Server, which is the world's most popular Web server software, Tomcat server, Cassandra, CouchDB, CloudStack, and many others.
Open extensible architecture
Figure 1 illustrtates how Apache Stratos' core components (Cloud Controller, CEP, Auto Scaler, and Stratos Manager, which include Artifact Distribution Coordinator and Rest API) integrate with the IaaS layer, foundation services, and dynamic services, which include cartridges.
Why is this architecture so important?
The cartridge model provides run-time extendability to any type of cartridge, such as language cartridge, framework cartridge, and data cartridge without having to bind with any specific operating systems. This enables the PaaS to be of a polyglot nature, which is important, so it would not have limitations like with many other PaaS offerings.
Another key advantage of the Apache Stratos cartridge model is that it enables to bring even legacy containers and applications into the cloud with ease. Therefore, with Apache Stratos, you can cloud enable both existing IT assets as well as future IT assets that you plan to use or are yet to acquire.
Another important architecture design in Apache Stratos is unified communication among all components that use the message bus and real-time event bus. It provides a unified interface to integrate with any third-party system or extends to work with existing systems. Moreover, it has been carefully designed to meet heavy traffic via the real-time event bus (via thrift protocol) and uses AMQP for messages that need reliable delivery.
A key extensibility aspect of Apache Stratos is its ability to plugin any IaaS due to the use of apache jclouds API. This provides more freedom to choose your own IaaS vendor, and allows to extend multiple IaaS integrations, which are important in features like cloud bursting, etc.
True flexibility for custom services
True flexibility for your own custom service is sparse in current PaaS offerings. In most cases, you have to make-do with what's available and work your solution around it. However, with the Apache Stratos cartridge model, you can create a custom service without having to deal with any limitations or boundaries. Your cartridge can be fully configured (installed all software, configuration, etc.) or zero configured (enable cartridge user to install and configure what they want) or something in-between. This will allow you to customize your PaaS to be in sync with your current business workflows.
Multi-factored auto scaling
A majority of PaaS providers only used HTTP traffic to auto scale or for dynamic resource provisioning. It comes with limitations on scaling non-HTTP-based applications. However, Apache Stratos auto scaler can takes HTTP traffic and non-HTTP health data to carry out intelligent dynamic resource provisioning. Further, it's capable of dealing with these multiple factors and run through scaling algorithm simultaneously. Inflight request count on load balancers and load average; memory consumption are some of these factors and it's easy to extend (benefit from clean unified communication) to any factors that are required to take care of auto scaling.
Predicting future loads
Another important capability of Apache Stratos is predicting immediate future load based on current health statistics. All cartridges, load balancers, and health monitors publish health status into CEP (complex event processor) via a real-time event bus. The CEP will aggregate all of these events and calculate the first derivative and second derivative for a given timeframe and paas the resulting streams to the auto scaler via the reliable message bus.
The auto scaler uses motion equation to get the immediate (next minute) future load.s = ut+ 1/2 at2
- s = predicted load
- u = first derivative (eg. first derivative of current load average)
- t = time interval (eg. one minute)
- a = second derivative (eg. second derivative of current load average)
Multi factored auto scaling leads to maximized resource utilization while enabling ease in capacity planning. Moreover, it's capable of dynamic resource provisioning across multiple clouds. This provides devOps with easy and very accurate capacity planning.
Multi-tenancy has different levels of isolations. Almost all PaaS vendors only provide container multi-tenancy like virtual machine, LXC or docker, etc. Yet, this is not scalable for a large deployment scenario that has hundreds, thousands, or millions of tenants.
Apache Stratos has both container and in-container multi-tenancy capability, making Apache Stratos unique in the PaaS space. With in-container multi-tenancy support, users can have high tenance density, which optimizes resource utilisation by sharing resources, such as CPU and memory across tenants.
Scalable dynamic load balancing
Load balancers play a major role in scaling applications in the cloud. Load balancers distribute incoming traffic into several server nodes, or clusters, or other resources to maximize throughput, minimize response time, and to provide mechanism scale application based on the workload.
Apache Stratos is capable of provisioning scalable load balancers for any IaaS clouds as well as integrating with any third-party load balancers. This gives more flexibility and extendability while providing more efficient load balancing based on the deployment environment.
Apache Stratos load balancing features and benefits
Provisioning - Load balancers can spin up dynamically. Based on load balancer as cartridges, Apache Stratos will spin up defined minimum load balancers with the first application subscription. Moreover, it is capable of defining load balancers to spin up in every cloud and region, enabling effective multi-cloud deployment, especially for geo-graphical-based application deployments.
Flexibility - Can define service-level dedicated load balancing. Easy to define service-level load balancers via REST API while capable of carrying out load balancing in multiple services with a single load balancer.
Expandability - Capability of integrating with any third-party load balancers. With the message broker and topology-based model, it's easy to integrate load balancers like HAProxy, nginx, AWS ELB, etc. It provides optimized load balancing based on the deployment (e.g. uses AWS ELB on EC2 deployment).
Capability of controlling IaaS resources
Different IaaS vendors provide different resource pooling, like regions, availability zones, hosts, subnets, etc. If we could not control these resources and utilize it in the PaaS layer it would result in waste of many resources. Controlling these is also key to carry out high available kinds of deployments.
Apache Stratos has been carefully designed to address the problem discussed above. It has introduced partitions and network partitions to group IaaS resources to deploy cartridges in a very controlled manner.
Partitions are logical groups that can be defined by devOps based on available IaaS resource pooling like regions, availability zones, etc. With this definition, Apache Stratos is capable of selecting where to spawn Cartridge instances and select the resource pool, which is very useful in deployments like high available or disaster recovery.
With this concept, Apache Stratos can logically group one or more partitions that reside in the same network. With this network partition concept, Apache Stratos Auto Scaler can have the intelligence of monitoring and predicting load of particular network bound regions and take necessary auto scaling decisions very easily. This is also a very unique and important feature that Apache Stratos brings into the PaaS space.
Logging, metering, and monitoring
Logging, metering, and monitoring are primary, but important features that should not be ignored. Apache Stratos is capable of capturing all health statistics, application logs, and usage, and aggregating them into a centralized location. It makes devOps life easy, otherwise it is an impossible task to login and monitor each and every instance in a large-scale deployment that has hundreds of instances.
Cloud bursting is now widely discussed as it reduces TCO (total cost of ownership) while provisioning application into another cloud to handle peak load. Like all other aspects, Apache Stratos cloud bursting is also carefully designed to work with private, public, and hybrid cloud with effective provisioning load balancers per bursting cloud.