What is configurability?
Configurability is the ability to change application behavior (functionaility) and the interface by changing application parameters, without the need to rewrite code. This can either be done in the front-end by users, or through back-end configuration. On the other hand, customization requires making change to the application code to modify existing or support additional requirements. Sophisticated application design (e.g. web hooks) can permit customization by externalizing the new functionality. But modifying existing functionality in a multi-tenant application is really not advised.
Top 3 / All-time favorite requirements
- Web forms / Custom fields: Customers may require the flexibility to add additional fields to a particular document/record (object). Moreover, there would be a need to validate the input to the field based on data-type, or a script. For example, tenant A may require tax-ID as an additional integer field on the customer information object, and also make it a mandatory input. This has grown to be complex enough to support attachment fields, link to master data, controlling access to specific roles/user, etc.
- UI customization: Customizing the user interface involves matching the look-and-feel with the customer’s branding: corporate color scheme and adding their logo. Allowing users to customize their own data views (record lists, reports) is just assumed to be there. Sometimes controlling data elements could also be a requirement. (E.g. End-users wont know certain information, so a section needs to be hidden for them. But the next user in the workflow Continue reading Top 3 configurability needs in B2B apps
Every Product Manager is a ninja when it comes to dealing with functional requirements. But it doesn’t end there in the B2B space. You may not be a technical product manager, but you still need to understand and address some non-functional requirements without which your product isn’t ready to sell – especially if its transactional in nature, holds sensitive data or requires integration with the client’s IT eco-system. By ‘address’, I don’t mean you need to plan these as features or get involved in the R&D – it’s just about getting answers to what has been done in this regard.
What makes non-functional requirements so important?
Good question! If your product touches any of the 3 aspects mentioned above, the client’s decision to buy the product is incomplete without involvement of the IT team. You might have the CXO’s approval, but even if a single IT executive deems your product unfit for the IT security standards the client is committed to – the sale is likely to fold. You need to make a compelling offer, not just to the functional decision makers, but also to these non-functional evaluators whose buying is equally important. And there is a fair reason to it. Imagine, if you’ve worked hard to keep a floor clean, and someone wants to walk in with their own shoes – no matter how clean they claim to be, would you let them in? IT doesn’t want to risk their network either. I really don’t see this coming in the way of B2C sales – a LinkedIn premium membership or even Online Banking for that matter.
What needs to be taken care of?
Here at at-least 7 areas for which you will need clear answers.
- Software requirements: With SaaS, customers have fallen in love with apps that railed on web browsers. But IT remains unsatisfied with the ‘my app runs in a browser’ response. They need to understand whether it runs ‘best’ on a particular browser or a specific version. As a product manager, you need to know the share of each browser version and build support accordingly. Dependency on components (e.g. FLASH) can cause the deal to hit a road-block.
- Data Security: Customers always question the security of their data while using hosted services. And this becomes all the more critical when you’re selling a multi-tenant application. If you’re able to help them get over the SaaS phobia, the next questions could be around data security & access control, data center certifications, third-party quality assurance reports, etc. Apart from this, customers solicit information about user authentication and authorization capabilities, user management from the application console and integration with existing user management solutions like LDAP. Don’t be surprised if a client demands a sandbox for a hands-on verification.
- Flexible application stack: Customers may explicitly specify software requirements such as the use of specific database engines or application servers. In some cases, they are even willing to pick the tab for additional license fees to ensure Continue reading 7 non-functional demands from B2B customers
Over the last decade, there has been a massive growth in the number of web-based applications. For every category – email, collaboration or knowledge management to name a few – there are a large number of applications available, and new ones on their way. This has created extreme competition in the market with each application claiming to be better than the other. Even if a new concept exists that is strong enough to drive the market, time-to-market is a crucial factor that will decide the success of the product.
To address this, a rapid application development strategy needs to be in place so that the product and incremental features can be delivered at the expected rate which is dictated by the market & customers. Besides this, development needs to also follow an agile model so as accommodate ever-changing business requirements. This is especially true in the case of product development, where a single product must fit multiple customers with varying business requirements, and the classic waterfall model can lead to complete failure.
Web Application Frameworks
A web application framework (‘framework’ hereon) is a software framework that is designed to support the development of dynamic websites, Web applications and Web services by providing core, non-functional features out-of-the-box. A framework streamlines application development by automating many of the patterns employed for a given purpose and thus resolve the overheads associated with common activities performed in web development.
A framework also adds structure to the code, prompting the developer to write better, more readable, and more maintainable code. It promotes code reuse through the use of libraries for database access (using ORM), template engines, session and user management, logging, internationalization, etc.
Framework selection (we’ll elaborate this in the next post) is thus crucial in delivering the required functional & non-functional requirements within stipulated timelines. Non-functional are the primary influencers Continue reading Rapid application development & web frameworks
Multi-tenancy was a relatively new concept back in 2010 when I was writing the dissertation report for my MS. This extract from the report aims at providing a clear understanding.
Multi-tenancy is an architectural pattern in which a single instance of the software is run on the service provider’s infrastructure, and multiple customers, or tenants, access the same instance. It is an organizational approach for SaaS applications today. SaaS-based software providers are believed to have evolved from Application Service Providers (ASPs) from the previous decade, which differ from today’s multi-tenant applications which are provided via a software-on-demand model specifically designed for SaaS distribution. Although the interest in this concept is rapidly growing since its inception in 2005, research is relatively slow.
Key aspects of multi-tenancy
- The ability to share & optimize the use of hardware resources
- The ability to offer of a high degree of configurability
- The architecture to support the use of a single application and database instance to serve all tenants
- Cost benefits from economy of scale & improved utilization
- Ease of deploying a single instance
- Simpler management
- More frequent releases with bug-resolutions & new features
- All customers are upgraded at once
- Reduced operational costs
- Easier to scale-up with the advent of cloud computing
Benefits of multi-tenancy
I had done some research on this topic and found that some script was available in Python. With no knowledge of Python execution, I sought help from stackoverflow & got the answer there pointed to the same Python script 🙁 I decided I had to do something on my own! Ensuring the right no of spaces in the YAML could be a real pain – I haven’t found the error messages to be very friendly.
My challenge was to be able to generate a YAML for a table/schema using the nested-set behaviour in Doctrine. Instead of losing my mind on devising a human-readable format, I reverse engineered. I checked the resulting schema in the database and used that as the base for my CSV. Following this I wrote a simple macro that will output in the required format. This has evolved over a week or so, and has been thoroughly tested. I am sharing this file with 2 examples: one for the JobeetJob schema & other from the Hierarchical Data page on Doctrine.
Let me know if this helps! Vote for the answer on StackOverflow.
To start using:
- Download the ZIP file CSV/Excel to YAML Generator v2 & unzip it.
- Change the model name Continue reading Converting CSV/Excel data to Doctrine YAML fixtures