This is documentation for the current major version Apprenda 7.
Older versions are also available.

What is Apprenda, Physically Speaking?

Apprenda combines an application server/application container technology (complete with SDKs and APIs for interacting with its components and services) with a set of web portals allowing different constituents to interact with Apprenda in various capacities. As an application container, Apprenda acts as a host to guest applications deployed on it. However, from a physical point of view, Apprenda is a distributed, single- and multi-tenant application, multi-server hosting layer. This concept will be critical to understand in detail, since it will provide a context for the motivation behind many of the requirements in building an Apprenda application and will also give you a significant advantage in understanding how to best leverage the technology.

Let’s dig a bit deeper to become familiar with the various components that make up Apprenda from a physical point of view. Apprenda as a whole product is composed of:

1. Apprenda Server: The server fabric (as described in What is Apprenda, Logically Speaking?) consisting of a variety of services (on both Windows and Linux environments) that provide Apprenda's core functionality (these are described below).

2. SDK: The SDK consists of our API, documentation, samples, and local development and deployment tools and IDE hooks. These components are designed to aid in the development process and allow a developer to emulate running an application on a live Apprenda instance.

3. Apprenda System Operations Center (SOC): A web portal for back-end management of network infrastructure, global settings, your application components, and the server fabric. The SOC can be accessed via the URL http://apps.yourApprendaRoot.com/soc where ‘yourApprendaRoot.com’ is the root URL you provided while installing Apprenda. For Apprenda Express installs, this is defaulted to http://apps.Apprenda.local/soc.

4. Account Portal: A skinnable/brandable web portal that provides your Tenants with account management functionality. When a new organizational unit signs up on the Platform, they and their users are actually provisioned at the Apprenda level, which gives them access to manage their Apprenda account (if branded, it’s simply your Organization’s account management system). The Account Portal can be accessed via the URL http://apps.yourApprendaRoot.com/account. For Apprenda Express installs, this is defaulted to http://apps.Apprenda.local/account.

5. Developer Portal: A skinnable/brandable web portal for product management that allows your Organization’s technical assets to manage application uploading, deployment, and configuration. The Developer Portal can be accessed via the URL http://apps.yourApprendaRoot.com/developer. For Apprenda Express installs, this is defaulted to http://apps.Apprenda.local/developer.

Apprenda Platform Server Roles and Components

Apprenda is a collective set of processes and web services that work together to accomplish the application deployment and hosting feats described above. Through these components, Apprenda coordinates server and storage resources on your behalf and provides a homogeneous hosting layer for your applications. 

The infrastructure that constitutes your Apprenda Platform can take on varying hosting roles. When Apprenda is installed, it places executables on a collection of servers that you specify depending on OS and hosting capabilities of the server. Those executables interact with one another in a peer-based fashion to stitch together all the servers in the network you’ve dedicated to Apprenda into a single logical deployment and execution runtime.  

The following briefly lists Platform server and storage roles (please see here for more in-depth information on roles).  Please note that roles that are not essential to Platform functionality are marked as "optional."

  • Windows OS

    • Application Server
    • Web Server
    • Load Manager
    • Platform Coordination
    • Cache
    • Storage Controlling Services Host
    • ADFS (optional)
  • Linux OS
    • Linux Server (optional)
  • Storage
    • MS SQL Instance
    • Oracle RDBMS (optional)
    • Platform Repository

Depending on its roles and what Apprenda components it hosts, each Windows node that Apprenda manages may have one or more of the Windows-based or WCF-based services described below. Linux servers have a separate set of services that are also described below.

Windows Services

The following table lists all of the Windows Services that are required by Apprenda in the order that they should start. The installer will configure and register the services on each server as appropriate. 

Service Name

Name of the service as per Services MMC snap-in

Executable Name

Name of the executable that appears in Task Manager

Required On

Indicates which server(s) the service must be running on

Purpose

Describes the service and its role on Apprenda

Apprenda Caching Apprenda.Redis.
WindowsService.exe
At least one Windows Server designated at installation A distributed Redis-based in-memory caching implementation for Windows and Linux.
Apprenda
Zookeeper
(Platform Coordination)
Apprenda.Zookeeper.exe At least one Windows Server designated at installation Platform Coordination provides global lookup and name-server-like functionality to all other member nodes in Apprenda. Platform Coordination is responsible for maintaining awareness of all nodes, tracking relationship graphs between nodes and what they each host, as well as maintaining responsibility for certain types of fabric-level management requests.
Apprenda Load Manager SaaSGrid.Core.Services.
LoadManagement.exe
At least one Load Manager Node This service is responsible for updating URL re-write rules when applications are deployed on the grid and during other operations such as relocation of user interface partitions.
Apprenda Windows Host

Apprenda.Windows.Container.exe or SaaSGrid.SMART.
LocalDeployment.exe

(depending on Task Manager view)

All Servers in the Web Server and Application Server role The Windows Host is responsible for concretely defining the host machine’s physical participation in an Apprenda instance and is the marker that flags the server as “part of the fabric.” Any requests that are explicit management requests against the underlying OS are dispatched to the Apprenda Windows Host.  Also, the Windows Host provides hosting and management services for WCF web services belonging to applications hosted on the Apprenda fabric. WCF service deployment requests are dispatched to the Apprenda Windows Host, which can download service binaries from the Apprenda repository at runtime, install the service locally on top of a Apprenda WCF bootstrapping and hosting system, configure the service with dynamic endpoints that are registered with Apprenda’s WCF dispatching system, and finally launch the service.

WCF Services and User Interfaces

Apprenda relies on its own guest application hosting capabilities for some of its functionality.  Apprenda components that can be integrated this way are deployed as Platform-hosted guest applications with WCF service and/or user interface components; for more information, including a full list of the Apprenda components hosted as Platform guest applications, please see here.

Linux Services

The following table lists all of the processes that are required by Apprenda to host applications on a Linux environment.  

Service Name

 

Required On

Indicates which server(s) the service must be running on

Purpose

Describes the service and its role on Apprenda

Apprenda Linux Container All Linux Servers The Linux Container provides management services for Java Web Applications packaged as WAR files. WAR deployment requests are dispatched to the Apprenda Linux Container, which can download service binaries from the Apprenda repository at runtime, install the WAR locally on top of Tomcat/JBoss, configure the application to register with the Platform's coordination services and, finally, launch the application.

Platform Databases

The following table lists all of the SQL Server databases that are required by the Apprenda Platform. Unless otherwise noted, the Platform will create only one instance of each database.

Database Name

Purpose

Describes the service and its role on Apprenda

316b32db-e812-40b8-9be0-9a4292bc95cc Developer Portal database. As the Developer Portal is a multi-tenant application hosted on the Platform, you will also see a corresponding provider database.
40fbb645-f07f-4f59-a4eb-4a692452f709 Account Portal database.As the Account Portal is a multi-tenant application hosted on the Platform, you will also see a corresponding provider database.
Apprenda Auditing
(6.5.0 and later)
Stores auditing data on Platform operations when Platform Auditing is enabled.
Apprenda Logging Contains log entries for all Platform logging. Typically this excluded messages generated by guest applications, which are  stored in a special database created for each development team in the following format:
apprenda-logging_devTeamAlias
Should the Platform be unable to send guest application messages to the development-team specific databases, it will send them to the Apprenda Logging DB.
Apprenda Utilization Stores utilization data for all deployed guest application components when Resource Utilization is enabled.
ApprendaHttpRouting
​(6.5.0 and later)
Stores URL Rewrite rules for the Apprenda Load Manager.
ApprendaManagement Appears on all Platform-managed SQL instances; stores information local to the SQL instance.
SaaSGrid Billing Stores billing information for Platforms that have upgraded from earlier versions before billing support was deprecated.
SaaSGrid Core The primary database for all Platform functionality.
SaaSGrid Scheduling Stores Platform information related to scheduling.

 

How does Apprenda Handle Application Components?

When an application is deployed to Apprenda, the Platform handles each component differently. Please see the How the Apprenda Platform Deploys Your Application section of our documentation for in-depth description of the deployment and configuration process for guest applications.