My co-founders and I started Nirmata to transform software development & operations, and make better software. We believe that a new approach to software development is necessary as the demand for software continues to grow, and as software architecture and development is being significantly affected by three major trends:
- Cloud Computing
- Apps over Applications
- Software-defined Everything
Trend #1: Cloud Computing
As businesses are adopting cloud computing to replace traditional data centers, software applications now need to operate in a new environment. Current software was designed for environments where resources are manually allocated (typically over-allocated) and carefully managed. This approach does not work in a cloud. Migrating existing applications to a cloud causes fixed usage at peak-load requirements of leased resources. Also, applications that are deployed as a single monolithic runtime unit (e.g. the app tier of a JEE Web App) will create operational complexity in a cloud environment, as they are not designed to handle failures or scale in a granular manner.
“Unfortunately, without the proper architecture, there’s a very real risk that Cloud Computing won’t live up to its promise or in some situations will fail outright.” — Bloomberg, Jason (2013-01-23). The Agile Architecture Revolution
Software that needs to run in a cloud requires a different architecture. Additional drivers for this new architecture are mobile computing, big data, the internet of things, and software-defined data centers.
It is important to note that although cloud computing disables existing software architectures, it also enables a new delivery model for software designed to operate in clouds.
Trend #2: Apps over Applications
It has been estimated that 80% of features in enterprise software applications are typically unused. Thanks to the smart phone, a new model has taken hold, and consumers are getting hooked on simpler software “apps”, instead of bloated, complex enterprise software. The “app” approach also affects backend (server-side) software architectures, as well as software development and operations. Large, monolithic software applications are being re-written as easy-to-use, focused, and co-operating services that run on a common platform.
Trend #3: Software-defined Everything
As more and more devices, even entire data centers, are becoming software-defined a new layer of software applications is needed to control and manage these devices. Application software will rely on platforms, controllers, and policy engines that manage the underlying devices. These special purpose software infrastructure components will be required to run in public and private clouds.
What will Nirmata Provide?
Nirmata provides a platform for development and operations of cloud native applications. With the Nirmata Platform, an application is designed as a set of loosely coupled cloud services. Each cloud service has pluggable modules for common features such as uniform APIs, security, metrics, etc. The Nirmata Platform also provides common services for service discovery and registration, data management, and auto-scaling. With Nirmata’s solution, a cloud service becomes the fundamental unit of development & operations. This architecture provides several key benefits, such as the ability to version, scale and deploy individual services. New applications can now be composed by using existing services.
We are just getting started at Nirmata. If you are building cloud applications and would like to learn more about the Nirmata Platform, we would love to hear from you.
To summarize, I would like to quote Jan Bosch, who “nails it” in his presentations:
- Increasing SPEED trumps ANY other improvement R&D can provide to the company – the goal is continuous deployment of new functionality
- Teams should be small, multi-disciplinary, self-selected and -directed, use data (not opinions) for decision making and optimize quantitative output metrics
- Software architecture is central in allowing for independent, continuous deployment to customers
At Nirmata, our goal is to enable rapid development of complex software. Software built using Nirmata will allow small autonomous DevOps teams to deliver and control incremental code changes. Nirmata enables businesses to move from 1-2 software releases per year to a continuous delivery model.
- The Agile Architecture Revolution, Jason Bloomberg
- Speed and innovation through architecture, Jan Bosch