Once upon a time, people just wrote code and then run it to find how well it worked. Working individually, the developer was able to iterate quickly until the software was useful to solve a real problem.
As software became more complex, it was broken into separate and independent sub-modules developed more or less in isolation by individual developers. Each sub-module was tested, the system was integrated back together, then tested, staged, released, deployed. Software development cycles stretched over several months (or several years).
The pendulum is swinging back. Software engineering is now evolving towards shortening the feedback loops and minimizing the time it takes from code being written to being in production. This time, we want to do it with more quality and predictability. The tools to achieve that are processes, automation, and collaboration.
Moving across the levels depicted on the picture above (Source Code Control, Build Automation, Test Automation, Continuous Integration, Release Automation, Continuous Delivery) is not simple. It involves not only changing processes and automating them, but also changes in culture and organization.
Continuous Integration (CI) is the practice of accelerating the daily commits of code by software developers. If in the past developers would work for weeks before trying to integrate their work to the main tree, in a CI environment you want developers to check-in their work several times a day.
A CI server monitors code check-ins by developers and, as often as practical, it builds the system and runs unit and integration tests. If there is any failure in the process, the CI server alerts the developers. A broken build gets the attention and top priority from the team.
CI requires test-driven development and automation.
Once you are doing Continuous Integration and is able to automate the deployment process, you can consider extending the process and automation all the way to the end-user. Continuous Delivery (CD) is the practice and ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead.
The automation system let changes to the system be released on a granular basis. Releasing features just to a subset of users and being able to seamless roll back to a previous version becomes possible.
The result is that there is no delay between enhancements and bug fixes being implemented and available to users.
Download Daitan White Paper Now
At Daitan, we work with organizations at different stages of agility. In more conservative and regulated markets (e.g. core telecom), companies operate in a fully structured waterfall model where software goes through discrete and serial phases of development, unit testing, integration and system testing. Companies producing software that is deployed in the Cloud and offered as a service are the ones most aggressively pursuing agility in software development.
The majority is somewhere around the middle of the diagram, trying to move towards more agile software engineering processes. Most of our customers have implemented significant test automation and continuous integration capabilities and are starting to move towards extending that towards release and delivery to end users.
Do you have traditional On-Premisse software you want to move to the cloud? Are you building a solution to be offered in a SaaS model?
The "Reference Model for Cloud Applications" diagram above can help you to evaluate your solution and imagine how a cloud version of your current software should look like.
For a complete discussion on moving applications to the cloud and offering them under a SaaS business model, please download the paper "Reference Model for Cloud Applications - Considerations for SW vendors building a SaaS solution".
Download the White Paper now:
The Oct/2013 edition of DaitanFlash is out. In this edition, we discuss the need for Software Development vendors to move from On-Premise to Cloud developments.
Click below to access the online version of the newsletter. To subscribe, please click on "Subscribe Newsletter" on the right-sidebar.
If you are a software solution vendor, the need to offer a Software-as-a-Service (SaaS) model should be obvious by now. The market is moving to Cloud deployments and SaaS. The need to reduce IT costs and to offer services that can scale up/down based on varying demand will cause this trend to accelerate in the next years and vendors that cannot make the shift will be left behind.
While most deployments of mainstream applications (CRM, ERP, email, document sharing) are already moving to the cloud, vendors of on-premise solutions in more vertical areas have been able to defend their market share based on richness of features. But as SaaS vendors accelerate innovation, that situation is not going to last long.
It makes sense for customers
From the customer's perspective, SaaS offers multiple advantages compared to On-Premise solutions:
Time-to-Value - Implementation times for SaaS are significantly shorter than comparable on-premise projects. While there may be situations where On-Premise can claim competitive long-term return-on-investment, SaaS trades CapEx for OpEx and presents less upfront costs and risks.
Reduced IT Costs - Most companies are trying to reduce their dependence on local IT teams working on systems that are not market differentiators for them, so they can focus their energy and resources on what makes them more competitive.
Current Software - Updating On-Premise software can be both disruptive and expensive. Most companies delay their upgrades as long as possible and run on software that is a few years behind the state of art. SaaS customers are (for better or worse) always running the latest version. Changes in functionality and user interface are more frequent and gradual, but generally there is no big operational disruption caused by upgrades.
Built-in Availability/Reliability - Sure, large enterprises can afford to build reliable systems through redundance and manage things like backup and security on their own. But for most companies, that is not the reality. By using SaaS, small and mid-sized companies gain access to shared "enterprise-class" infrastructure.
It makes sense for SW vendors
From the SW vendor's perspective, SaaS provides a direct connection with customers, more opportunity to innovate and better business:
Reduced barrier to sales - With less of a financial commitment, less IT dependences, and shorter time-to-value, SaaS reduces barriers to sales. More predictable and recurrent revenues lead to higher company valuations.
More upgrade revenue – SaaS enables a "land and expand" strategy where an initial sale can be more readily expanded by adding additional seats, companies divisions, and new modules than with on-premise software.
Lower maintenance and support costs - Without a legacy of old software to support, all resources are directed at providing the best software to all customers without being slowed down by supporting and being certain not to break compatibility with the prior releases.
More opportunities for innovation - The elimination of support burden saves development costs and dramatically increases the ability of the SaaS company to respond to new market opportunities.
Hosted is not SaaS
An on-premise vendor decides that a 'hosted' application is a close enough to a SaaS solution. Allocate some servers in Amazon cloud, put the old good software to run in some virtual machine, add some SaaS marketing we are done, right? Not really.
Sure, moving on-premise software to the a virtual server in the cloud can be a valid first step for the user to move towards Cloud Computing. But that doesn't mean Software vendors can confuse hosted SW with a SaaS solution.
For example, if your software is not a multi-tenant solution, neither you or the customers will benefit from the scalability and management advantages of SaaS.
On-premise vendors have had a hard time shifting to compete against SaaS-only new entrants. They have been particularly troubled with:
Multi-tenancy - Products that were designed to be one-off implementations for each customer cannot be quickly changed to work hosting a large number of separate customers in one system instance. These systems require full re-architecting.
Scalability - On-premise software is often designed with tightly coupled components requiring well defined and dedicated combination of computing resources. A SaaS solution needs to be able to allocate resources from elastic pools and be able to scale up and down according to demand.
Integration and Customization - On-premisse software required professional services to be adapted to the specific needs of each business and to integrate with other solutions. That continues to be true, but SaaS vendors generally do a much better job at offering software that is configurable and provide well-behaved APIs that allow for easier integration.
The right architecture for the cloud
At Daitan, we have seen increased demand from traditional SW solution providers for development to re-architect and move traditional on-premise applications to the cloud, so that they can be offered in a SaaS model.
We are preparing a reference model that will explore concepts like multi-tenancy, load balancing, application scalability, caching, database scalability and architecture for the cloud, NoSQL databases.
If you are software vendor facing the challenge of moving a solution to the cloud, click on "Contact Us" to find how Daitan can help.
Watch for the upcoming White Paper "Daitan SaaS application reference model". Subscribe to the DaitanFlash Newsletter to get the last updates from Daitan Group.
Daitan Group is a software development service company that partners with technology vendors to build their next solution in Communications, Mobility, Web/Cloud. We can help companies to develop their next SaaS offering in the market.
The Sep/2013 edition of DaitanFlash is out. In this edition, we discuss the Web Conferencing user experience.
You are presenting a commercial proposal to your big customer. A Sales Engineer will support you from a different location. Three people from the customer organization will be in the call. All you need is to set and invite people to a web conference and be able to talk to everyone and present a slide deck.
That should be simple, right?
Reality: that is anything but simple. It is not uncommon for web conferences to be delayed or go awry because attendees were using an unsupported browser, had the wrong version of Java or Flash, could not find the correct dial-in numbers, could not get their microphone connected, or simply "Can you hear me now?"
We have had enough technology to do good web conferencing for a while. Why can't we agree on how we are going to meet, talk and collaborate on the web?
Traditional Voice Conferencing
A conferencing platform connected to good old PSTN lines is still the most reliable and available way to get more than 2 people to talk over distance. Everyone knows how to dial phone numbers and it always work.
But voice is all you can do. No slides, no video, no screen-sharing. It works, but it is so 20th century.
Peer-to-Peer VoIP Applications
Applications like Skype are great for ad-hoc person-to-person calls and can support full desktop integration, with presence detection, chat, video-conferencing, screen sharing, file transfer, etc.
But they do not provide the facilities to set meeting rooms and do not scale beyond a few participants. They also require attendees to be registered users of a service and have the application installed in their native device.
Cloud-based Web Conferencing
Web Conferencing is great. All you need is a browser and everyone can connect, chat, talk, video-conference, exchange files, share screens, white board. It runs in any platform, from any browser.
It runs in any platform as long as you have a relatively new version of one of the support browsers. And the right version of Flash and Java and proper firewall and video settings. And if you are lucky. Problem is, most people are not always lucky.
Proprietary Web Conferencing Software
So most companies end up using proprietary Web Conferencing software like Webex and GoToMeeting. These avoid the OS/Browser/Java/Flash compatibility issues by installing a native application (which is available for the most common platforms). Installing a native application is a huge inconvenience and obstacle for adoption, but most business users have already gone through that.
So that is the best we can do today. People use Skype for ad hoc communication/collaboration. Business use Webex or GoToMeeting for structured web meetings. Proprietary applications that most have already adopted and work most of the time.
Can we do better than that?
Should we just accept the fact and integrate our solutions to the handful of dominant proprietary clients in the market? Is it possible to build a web conferencing platform that enables me to connect with any client, be it a Skype or Webex client, IP phone, soft-phone, cell phone, landline)?
Can we embed real-time communications engine in the browser so that everyone can connect peer-to-peer or to a conferencing gateway from any device without a client?
Can we build a cloud-based conferencing platform that let people connect from any device over the web and, at the same time, avoid interoperability problems and does not require the installation of Java and Flash?
The most likely long-term solution is a combination of the alternatives above. We need a standard to emerge because Chrome people need to be able to talk to IE people and IOS people should be able to video call Android people.
It might still take some time. But web conferencing must become better... and easier.
For an expanded version of this discussion, including Daitan's experience helping companies to pursue each of the paths above, please download our White Paper "Web Conferencing: It should be easy".
Daitan Group is a consulting and software development service provider with strong focus on IP-based communications. We work with the leading technology vendors in the conferencing, communications, and call center and can help you to design and build your next business solution. Click here to contact us about your next project.
Page 1 of 5