Martin Heller
Contributing Writer

Review: Apprenda PaaS fills the .Net gap

reviews
Oct 14, 20157 mins

The Apprenda private PaaS is both full-featured and flexible, supporting .Net and Java development and a wealth of deployment options

fill in the gaps chalk art street
Credit: Nick Stenning

The ideas for the Apprenda PaaS came out of the financial services industry. The wide use of Microsoft technologies in that industry explains why Apprenda started with ASP.Net on Windows, while most other PaaS platforms were built on Linux.

Founder and CEO Sinclair Schuller explains that when he worked at Morgan Stanley, his group was constantly reimplementing the same set of services to support ASP.Net applications for analysts and financial consultants: HTTP and database scale-out services, role-based authentication, metering, monitoring, logging, security, server provisioning, multitenancy. When the group asked management whether they could write a reusable set of services so that the actual applications would take a month to develop instead of six months, the answer was no.

And Apprenda was born.

Apprenda in a nutshell

The Apprenda private PaaS is logically an application server and container for .Net and Java applications; it clumps Windows and Linux infrastructure into a single logical layer that is a self-service computing platform for one or more development teams. Physically, Apprenda consists of the server, an SDK, the SOC (Systems Operations Center), an account portal, and a developer portal. The interconnection of nodes in Apprenda forms a grid.

The goal of any PaaS is to relieve developers from worrying about infrastructure. Apprenda does that, though IT has to provision and manage it, either on-premise, on cloud instances, or in a hybrid configuration. I tested Apprenda on a single Azure VM running Windows Server 2012 R2 with 8GB of RAM. My single-node test bed lacked Linux and Oracle, which limited me to testing Apprenda with ASP.Net applications backed by SQL Server.

apprenda iis app pools fig1

Figure 1: On Windows, Apprenda is implemented on IIS. The timecard–v1 application pool is a .Net application running on the Apprenda PaaS. Apprenda can now also run Java apps on Linux.

As you can see in the screenshot above (Figure 1), the Windows portion of Apprenda is built on the IIS Web server and .Net 4.5. Optional Linux nodes contain an Apprenda Linux Container, which provides management services for Java Web Applications packaged as WAR files, and installs the WAR files on Tomcat or JBoss, registers the app with Apprenda services, and launches the app.

The full stack of Apprenda services, shown below (Figure 2), layers your applications on the Apprenda API, which talks to Apprenda business services, such as metering, logging, and the SOC, and to the Apprenda Kernel, which provides basic platform services like HTTP and database scale-out, application versioning, failure detection and recovery, and multitenancy.

Apprenda takes care of providing scale-out, multitenancy, and so on, without requiring the developer to code anything at the application level. In the case of multitenancy, the PaaS can either create a separate database per tenant or expand the database schema to support shared tenancy in a commingled database. The commingled database typically gives better application performance, although isolated databases may be required by regulations.

Working with Apprenda

Customers who are familiar with Apprenda may be interested in the new features of Apprenda 6. The biggest news is the preview of Docker support, which may be used to deploy WAR files to WebSphere, and to run generic Linux executables — even basic script files. This expands Apprenda beyond its core support for ASP.Net, JBoss, and Tomcat application workloads.

As we can see in the screenshot below (Figure 3), Apprenda handles monitoring, scaling, patching, authentication, and reporting. The manual scaling operation shown is augmented by scheduled and automatic scaling operations. Scaling can also be defined in the application’s deployment manifest.

apprenda instances fig2

Figure 3: Apprenda handles monitoring, scaling, patching, and reporting. Here we are increasing the number of instances for a given service from 1 to 2. The performance improvement was noticeable.

The automatic scaling option is missing from this screenshot because I didn’t enable resource throttling for the platform. If it were enabled, automatic scaling would allow you to set the minimum and maximum number of instances for each component; the platform would then scale up or down based on operator-defined rules, such as “When CPU Utilization is > 90% for more than 2 minutes.” Scheduled scaling can accommodate cyclic use cases, such as “scale down on weekends.”

You develop Apprenda apps in Visual Studio or Eclipse with the appropriate Apprenda plug-in. The Apprenda SDK for Visual Studio includes .Net Guest Application API files, Visual Studio templates, Java Guest Application API files and docs, an archive builder, a mocker (used to mimic the Apprenda environment on a local development machine), a local API host, and the Apprenda Cloud Shell, or ACS. You can manage Apprenda apps from the ACS command line, from Visual Studio with the Apprenda Extension, or from the Web developer portal. Apprenda supplies demonstration apps for both ASP.Net and Java.

apprenda app dashboard fig3

Figure 4: The dashboard for an app includes events, event filtering, and uptime. Lifecycle controls are at the bottom right of this page; the next step for this app would be to promote it from the sandbox to production (published).

You upload a Zip archive in a specific layout to the Apprenda platform for deployment, calling Apprenda APIs from your code if you wish. You can use the Apprenda archive builder to create the Zip file, or construct it yourself with standard compressed archive tools.

The dashboard for an app includes events, event filtering, and uptime (Figure 4). Nothing went wrong with this little app, so we don’t see any events, but in a real app in production, you could easily find yourself swamped with events and would need to filter them to understand what went wrong. The lifecycle controls are at the bottom right of the page; possible application states include definition, sandbox, and published. The app isn’t available to users while it’s in the definition phase.

You can patch an app by uploading another archive. When you upload the patch, you need to check a box to tell Apprenda whether the patch is standalone, meaning you want Apprenda to throw away the bits from the last version, or incremental, meaning you want to keep any older files that you’re not replacing.

apprenda soc dashboard fig4

Figure 5: The Apprenda Systems Operations Center allows the Apprenda operator to monitor and control the PaaS itself and the running apps.

The Apprenda SOC (Systems Operations Center) allows the Apprenda platform operators to monitor and control the PaaS itself and the running apps. The SOC (Figure 5) provides platform operators with an overview of the current state of the platform. When resource throttling is enabled, the SOC provides information on the current overall allocation of resources and the top guest applications based on memory, CPU, and storage allocation. The Servers and Clouds pages of the SOC enable you to view and manage all the servers and clouds in the Apprenda grid. The Workloads tab for an individual server displays all the applications currently deployed to that server.

apprenda demo app fig5

Figure 6: This is the running Time Card Management app. While not the most sophisticated app in the world, it does demonstrate three-layer ASP.Net architecture running on the Apprenda PaaS.

One of the simple ASP.Net demo apps supplied by Apprenda does Time Card Management (Figure 6). It’s not a very exciting Web app, but it demonstrates what the Apprenda PaaS can add to a basic ASP.Net MVC3 app.

If you need a PaaS for ASP.Net apps or a mix of ASP.Net and Java apps, Apprenda is one of very few choices available. Similarly, if you need a private PaaS that can run on any cloud and any virtualization technology and create a hybrid grid, Apprenda is one of your very few choices, if not your only choice.

On the other hand, if you want a pay-as-you-go public PaaS or your needs can’t support a six-figure annual budget for the platform, Apprenda is not for you. And if your developers prefer Linux but abhor Windows, then OpenShift, Cloud Foundry, or Bluemix might be a better fit for your organization.

Martin Heller

Martin Heller is a contributing writer at InfoWorld. Formerly a web and Windows programming consultant, he developed databases, software, and websites from his office in Andover, Massachusetts, from 1986 to 2010. From 2010 to August of 2012, Martin was vice president of technology and education at Alpha Software. From March 2013 to January 2014, he was chairman of Tubifi, maker of a cloud-based video editor, having previously served as CEO.

Martin is the author or co-author of nearly a dozen PC software packages and half a dozen Web applications. He is also the author of several books on Windows programming. As a consultant, Martin has worked with companies of all sizes to design, develop, improve, and/or debug Windows, web, and database applications, and has performed strategic business consulting for high-tech corporations ranging from tiny to Fortune 100 and from local to multinational.

Martin’s specialties include programming languages C++, Python, C#, JavaScript, and SQL, and databases PostgreSQL, MySQL, Microsoft SQL Server, Oracle Database, Google Cloud Spanner, CockroachDB, MongoDB, Cassandra, and Couchbase. He writes about software development, data management, analytics, AI, and machine learning, contributing technology analyses, explainers, how-to articles, and hands-on reviews of software development tools, data platforms, AI models, machine learning libraries, and much more.

More from this author