Category Archives: programming languages

Creating a SaaS App with the Multi-Tenant Carbon Framework – Step 1

When using traditional application servers and integration middleware, developing a multi-tenant SaaS application that meets SaaS requirements (i.e. personalization, tenant dimensions, self-service, resource optimization, and data aggregation) is a non-trivial exercise.  The prior blog post in this SaaS series describes the requirements and constraints for SaaS applications.

Because WSO2 Carbon based middleware servers contain a tenancy framework, development teams may rapidly migrate single-tenant web applications into multi-tenant SaaS applications.  WSO2 Carbon creates a multi-tenant environment inside the middleware servers (i.e. application server, integration server, Enterprise Service Bus) and delivers unparalleled tenant density.   For more information on the cost and effort savings, read the multi-tenant, shared container PaaS white paper.

The WSO2 Carbon framework creates tenant partitions, registers tenant specific applications, provides tenant administration tools, and holds run-time tenant context.

In this blog post series, we will deploy a tenant-aware SaaS application on the WSO2 Application Server 5.1, illustrate how to acquire the Carbon Context object, and demonstrate multi-tenancy in action.  The WSO2 Application Server is based on Apache Tomcat, and extends Tomcat with enterprise security, logging, management, clustering, and multi-tenancy; turning the open source Apache Tomcat project into Enterprise, Cloud-Native Tomcat++

 

 Step 1 – Deploy Carbon and Acquire Carbon Context

The SaaS application demonstrates tenant-specific framework objects, illustrates tenancy isolation, and reviews the Java Tenancy API within WSO2 Carbon.   The application code is available from GitHub at https://github.com/karux/CarbonSaaSTest.git

The Carbon Context object holds registry, cache, queue, user realm, and role based access control (RBAC) information for each tenant run-time context. Each SaaS application can use a Carbon platform API to access context details and personalize the application experience.

 

This blog tutorial and example code demonstrates the following getting started concepts and steps:

  • Getting Started #1 – Defining a Tenancy Dimension Model
    • Step 0: Deploy the WSO2 Application Server and start server
    • Step 1:  Log into the Carbon administration console as the super-administrator
  • Getting Started #2 – Provisioning SaaS Applications
    • Step 0: Compile the CarbonSaaSTest Application
    • Step 1: Provision a Global Tenant Scope SaaS Application
  • Getting Started #3 – Acquire Tenant Context

Continue reading

Building Multi-tenant SaaS Applications

Multi-tenant SaaS applications deliver a personalized client experience while maximizing performance and efficiency.   Many teams are challenged by the specialized knowledge required to create a SaaS application on a legacy Java platform.  Creating SaaS applications requires detailed knowledge of multi-tenancy, contextual personalization, declarative programming, and infrastructure scaling.  The WSO2 Carbon platform contains unique Cloud-Native frameworks that decrease development challenges when building multi-tenant SaaS applications.

Continue reading

Changing the Cloud Developer Experience; User, Workspace, API, Channel, and Service

PaaS and DevOps tooling is an opportunity to raise infrastructure abstraction.  DevOps tooling integrated with PaaS should shield developers from hardware infrastructure concerns and expose business entities.  The Cloud washed PaaS environments commonly do not shield application developers, integrators, and architects from infrastructure details (i.e. memory configuration, location, number of machine instances). While short-term benefit is derived by ‘quickly pushing bits into the Cloud’, the design and development experience remains the same.

Continue reading

Enterprise-ready server-side JavaScript (SSJS) runtimes

Server-side JavaScript (SSJS) enhances developer productivity and accelerates common web application development tasks. For example, unmarshalling JSON formatted web requests into JavaScript objects and marshalling server-side JavaScript objects into JSON web responses are trivial tasks.  Dynamic typing and Just-in-Time (JIT) compilation decreases development iteration time and increases productivity.  A thriving ecosystem creates useful frameworks, which can be re-purposed across client and server tiers. However, without SSJS framework standards, the platform environment creates project startup delays and assembly required hurdles.

Continue reading

What is Jaggery.js

JavaScript has always had a special place in my tool chest.  The language delivers the power of scripting, dynamic typing, object-orientation, and web application frameworks. My first introduction to web application programming used client-side JavaScript and server-side JavaScript (SSJA) based on the Netscape Livewire framework.  JavaScript was my ticket to the web, social programming, open community involvement, and becoming an industry expert. While posting a few queries, answering questions, and interacting with Brendan Eich via the LiveWire NewsGroup (using NNTP), I was approached by an acquisition editor to contribute two chapter for the 1997 version of JavaScript Unleashed.  While working at a Hummer Winblad backed Software as a Service company during the turn of the century (1998-2001), we pushed the edge of the SSJS envelope to create a complex, multi-tenanted enterprise application.

WSO2 has released Jaggery.js, a framework to compose webapps and HTTP-focused web services in pure Javascript for all aspects of the application: front-end, communication, Server-side logic and persistence. The framework will reduce the gap between writing client-side web application pages and back-end web services.

Continue reading