Application Quality often takes back seat during the application development stage for various reasons; generally developers concentrate more on building the required functionality and meet the deadlines. They seldom check the effectiveness or quality of the code to make sure the piece of code performs well with the given load. Quality of an application determined through the following pointers,
Ability to solve the business problem
- Being responsive and able to execute a user request within a given interval
- Ability to Scale based on the usage
- Simple, elegant and maintainable Coding
Why SaaS Application Quality is different?
SaaS applications are meant to be accessed over the internet by users without having them install or maintain the entire application, so the solution is expected to be available 24/7 around the clock and provide at most reliability for the customers. All the Quality attributes has to be validated much more strictly compared to Single tenant or desktop based solution, the reason being it is a single instance based multi Tenant application, an error for one user is an error for everyone, similarly if the application is down it will affect the entire customer base.
In SaaS application development, Quality is sub categorized into Design, Run Time, System and User Quality attributes.
It refers to Consistency and Coherency of the overall application, which includes the way the application, is modularized or componentized and the coding guidelines and the naming Conventions followed throughout the solution etc. Maintainability deals with the ease of application maintenance and enhancement, because introducing new features, updates or patches might affect the complete application is if it is not coded for proper maintainability. Similarly, reusability defines the ratio of reusing the components built once and use it where ever required. In summary, the design qualities might affect the overall architecture if it is not well designed.
Runtime Quality attribute plays a major role in the Multi Tenant SaaS Application, because Multi Tenancy is heavily dependent on metadata or configuration. Based on the configuration it is the Runtime which makes the application function differently for different customer. Various runtime attributes are Availability, Capability to Interoperate, Manageability, Performance, Reliability, Scalability and Security. The unhandled System errors, Attacks, Unexpected Load can make the system unavailable for the end users which might break the reliability of the application. Reliability is the ability of the system to be continuously being in operation for a definite period of time; Scalability is the attribute of the system to support the increased load of the application without affecting the performance of the application i.e. serving each request of the customer within the definite time.
System & User Quality
At the end, DEV ops are going to deploy and manage the applications in the Production environment, so they must be aware of the error codes and proper information to support and maintain the application. This information should be precise and clear for them to understand and fix it immediately and bring back the system within a short duration. Likewise, easy to understand error messages and information has to be shown to the end users, because displaying High level error messages may not make sense for a non-technical personals.
What makes the applications more Quality?
Building Multi Tenant SaaS application is radically different than building single instance application.There are various considerations and design best practices that have to be followed to build a scalable, reliable and quality applications for cloud. Primary factors are Simple & Effective coding, following Design Patterns, and Performance orientation etc. During the development, programmers generally aim to meet the requirements of the product seconding the performance, scalability or reliability of the application, while this is the fact, but this should not be the case. Developers have to be very cautious and provide equal importance for the Performance as well.
Especially, while developing the underlying architecture and the core components of the SaaS product, much importance has to be given for the Quality of the coding, effectiveness, standards etc. Any design flaws or inconsistent design approach might lead to unmanageable or unmaintainable solutions. The SaaS Solutions must be architected in SOA model and componentized architecture, if so design norms and guidelines had to be followed for each of the layers of the solution, such as
- Web Layer
- Business Layer
- Service Layer
- Data Layer
How Techcello Can improve the overall Quality of SaaS Product
Techcello, a .Net based Multi-Tenant application development framework brings all the Non-functional requirements as a ready to use components and libraries. It’s a template based approach wherein it brings in N-tiered, 3 layered SaaS architecture and a base SaaS Solution through which any product can be developed for any domain. Techcello is a Multi Tenant technology stack follows consistent design patterns, Coding Standards, SaaS and Cloud best practices etc. Cello follows a framework approach and demands the developers to adhere the guidelines, these guidelines are well known and implemented by many SaaS pioneers and proven as successful and performance oriented.
Cello Stack contains various independent components built in a modularized, SOA based model, these components follows the quality guidelines and quality attributes, for instance Security framework of Cello follows Role Based Access Control [RBAC] which gives granular level of security in both Functional and Data Level Security, other kind of web security includes Cross Site Scripting, CSRF, SQL Injection, Insecure Cookie Validation etc, similarly Cello provides encryption providers for data which has to be secured. Cello adheres most of the security standards defined by OWASP [The Open Web Application Security Project].
Following Security framework, the Identity Management system has been constructed with multi Tenancy in mind, i.e. it provides full blown Membership Management in a multi-Tenant model allowing tenants to create their own Entities, Identities and map the Identity to Attributes etc. So the Complete process of Authentication, Authorization, Roles, Delegation and Identity Interchange [STS] is abstracted from the developers.
Similarly many SaaS operation components such as Tenant Management, License Management, Metering, Usage Auditing, Metering etc other Cross Cutting concerns of web applications such as Logging, Error Handling , Caching provided by the framework out of the box. These SaaS common components are abstracted out from the developers, so that they can spend all their time in building the business aspects of the product rather than spending time in building technology aspects.