July 22, 2014
The Importance of Multi-Tenancy
This may be a bit more of a technical post then most of my posts but I think it’s an interesting topic and falls in-line with the purpose of my blog. Sharing relevant information and especially focusing on those items which will either improve your business or showcase possible future improvements in the tech industry. I’d like to share some details and specifics in regards to the concept of multi-tenancy in software application development.
I suppose with a technical topic like this it might be helpful to define what exactly is meant with multi-tenancy. Here’s the wikipedia definition:
Multi-tenancy refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client-organizations (tenants).
Does that make perfect sense? If it’s still a bit unclear (or much much more than a little unclear) here’s a more detailed definition:
In a multitenancy environment, multiple customers share the same application, running on the same operating system, on the same hardware, with the same data-storage mechanism. The distinction between the customers is achieved during application design, thus customers do not share or see each other’s data.
Hopefully that definition helps to clarify more what the idea implies. So what does this mean in today’s technology scene and how does it affect the design patterns of your software application? Here are 3 ways multi-tenancy will be helpful to your application and 3 things you’ll need to do differently in development of your app. Let’s start with the 3 benefits.
Upgrades are Easier
When you create a multi-tenant application the upgrade process becomes significantly more simple. Instead of needing to update every instance of your software across a large number of servers you are able to update a single, central application or codebase and have the changes instantly available to all users. This obviously greatly simplifies the process of deploying new versions and the time involved in this process. Upgrades can also be considered to be the creation of new accounts as well. With a multi-tenant application the process for spinning up a new cloud and application is incredibly easy and can be done very quickly.
Customizations are Easier
The second benefit comes in the terms of customizations. In these types of applications you’ll obviously need to provide some level of customization for each user installation. Whether it be template changes, additional functionality, or merely a logo you will need to be able to deliver custom options. With multi-tenancy based applications you can provide an additional layer to allow for customizations while still maintaining an underlying codebase which remains constant for all users.
Ongoing Cost Savings
While there are many benefits to multi-tenancy applications I’ll provide only one more here. Rather than focusing on the benefits to cloud computing (there are many) I am going to instead mention that these apps provide significant cost savings over the alternatives. We talked about how multi-tenancy will speed up upgrades and save time (and also cost) but in addition the server / cloud requirements for a multi-tenancy application are much less. No dedicated set of resources must be configured and depending on your architecture can be a very minimal environment. The opportunity to save money takes many forms and becomes greater as the application scales up.
Ok, so that all sounds pretty good. In fact, it sounds insanely good. Too good to be true? Nope. But before you immediately drop everything you’re doing and begin to delivering multi-tenancy based applications here are a few things you need to consider when developing your apps. These are certainly not deal-breaking problems but rather some things you should plan for when beginning your development.
There are of course infrastructure complexities which are inherent when developing a multi-tenant application. You must consider the way you wish to structure your application. Do you want to use a multi-database approach or a single database with a tenant ID field? Questions like these must be answered and often are unique to the environment of the specific application. There are of course positives and negatives to each approach thus it does depend on the situation. Other infrastructure ideas to consider involve the file system directly, the deployment methods, and the configuration options unique to each user.
Security is always of great importance when creating an application however when creating a multi-tenancy application this becomes a much greater priority. You are now creating an application which will be serving many users from a single codebase. This increased vulnerability as there comes a single failure point for many clients. Of course this can be mitigated through a variety of options but remains something to be considered. In addition, depending your database method chosen in the infrastructure planning you may have to plan for additional security methods to be employed to protect your database and eliminate cross-account failures.
The last of the three considerations I’d like to mention is the issue of a shared codebase. I list this as a benefit but it is also a consideration to be accounted for when creating your application. When you create your app are you going to share an entire application or will you give some level of unique filesystem to each cloud? Of course some of the main benefits of multi-tenancy is a single codebase, however, when doing this you have a number of options for how to create multi clients from a single codebase, symlinks or hard links or other methods (especially when considering unique elements such as configuration files, template or logo files etc…). You will need to plan for this when creating your multi-tenant applications.
As with the benefits section above the considerations section also holds many more little things to plan for beyond just the three I mention. But since I want to provide a bit higher level of information I’m limiting myself to only three of each. There may be better or more important ones you think of. If so, I’d love to hear about them.
As you can see there are a few development concerns to be taken into consideration when planning and building a multi-tenancy application however with a well documented plan and clear direction how you’ll handle a few key development decisions you can create a remarkable application capable of enormous benefits.
The concept of multi-tenancy has indeed been around for a while however with the growing focus on cloud computing and the ability to create cloud-based applications creating multi-tenant applications becomes far more important. I highly encourage you to do more research on this topic and consider using multi-tenancy for your next application. I believe if you wish to remain relevant in the coming technological advances we see in the space you will need to create multi-tenant applications.
July 11, 2014
The Future of Open Source
I was recently involved in a discussion where the topic of open source came up. The comment was made that open source has become quite ubiquitous in the world and the concept of open source was no longer novel or unique. In fact open source has become pretty much the “norm” or the standard by which technology projects are created. So with that base in mind, what does the open source of tomorrow look like?
Disclaimer: Please keep in mind what follows are my own thoughts only. You may completely disagree. I may be entirely wrong about what tomorrow’s open source holds and how the future of open source looks. These are only my thoughts based on my opinions.
Today’s Open Source
I think when we explore what open source has done for technology in general we see some interesting points and some great success stories. Everyone is familiar with the success of major corporations like Linux, which has now proven its dominance as an operating system (I refer to server dominance – they still struggle with implementations for the end user). We’ve seen countless companies (and governments) attempt to integrate open source deeply throughout their products. And we’ve seen millions of smaller projects employ open source and publish their code on popular social sites like GitHub or BitBucket. That’s now.
Tomorrow’s open source continues on this basis but expands it even more. And it’s already begun. Here’s a few things I think we’ll see in the future of open source.
Open Source Will Go Beyond Technology
This idea of going beyond technology has already begun to occur. We’ve seen articles about companies involved in open source farming, open source healthcare, and many other areas of life. The concept that open source refers to merely the code behind a particular software project is yesterday’s thinking. Looking forward at what tomorrow holds we see a world where open source permeates every aspect of life.
The benefits to this saturation are numerous. We’ll see advancements in our scientific research. We’ll experience faster innovation in the study and treatment of various health conditions. We’ll be capable of improving our planet by improving our understanding of nature and each other.
The idea of open source will continue to grow and expand beyond the current community of the technical and the engineers. More and more people will be familiar with the term open source, but the idea will be vastly different then what it means today.
Open Source Projects Will Be Blended
In the future of open source the projects built on open source will begin to be blended. We’ll see a sharing of open source information cross-pollinate between various aspects of life much more so then is evident today. If we look at a small subset of open source available today we notice the efforts of communities to make their open source product not only available to everyone but interoperable with others as well.
The communities want to work together and interchange bits of open source systems to allow people to create what they want to see without being reliant on any one open source project. As mentioned, the majority of open source today is code-based. Developers share their code through online social networks and encourage others to use it. They work to make their code generic enough that it can be used with other open source code as well.
In the future this sharing and blending continues to become more of a priority. In the future open source will lose the heavy “tech” feel and be found everywhere in the world and as that encompassing occurs the new cutting-edge will be seamless interaction between different systems. The future of open source will be the sharing of knowledge and concepts.
Open Source Will Be Simplified
The next logical step for open source to take is a simplification. As those individuals push the limits of blending open source across platforms the need for a standard or simplified base will become more and more a priority. Open source projects will seek ways to increase the ease with which they can be blended and integrated with each other and through this process the concept of open source will be simplified and standardized.
The simplification of open source will increase the number of individuals who can work with open source. Currently open source is somewhat limited to technology. As such the more technical-minded of the world are leading the charge and creating things with open source. In the future this balance begins to shift.
Tomorrow’s open source is everywhere, in everything, and simple enough for everyone to be a creator rather than just a consumer. The world will become more open as more people are empowered to put their imaginations to work in creating something new. Because they can.
Open Source Continues.
The future of open source is somewhat of a mystery. I admit the ideas above are perhaps more of the immediate future than a long-term vision. (Maybe I’ll share other revelations later). One thing is clear. Open source has proven its dominance and will continue to impact our lives in more and more ways. The benefits of open source will continue to grow and the use of open source will be far more widespread.The future of open source is the future of our world, and it’s exciting.
Do you have ideas about the future of open source? Tweet me, I’d love to hear them! Let’s share knowledge, let’s promote open source, it’s our future.