This post has been co-authored by Jan Gregor (@jan_gregor), CEO, mimacom Slovensko s.r.o



Challenges of Enterprise IT

Enterprise IT is currently undergoing the biggest change in decades. Growing user mobility, competition from cloud service providers and increasing use of big data all pose big challenges that require IT departments to reconsider the status quo. Today's enterprise IT is mostly focused on the operation of large, complex applications based on the client-server or even mainframe architecture. These applications were built for a limited number of users (of a couple thousand at maximum), have development cycles of months, and upgrading them is often a very time-consuming process, especially if they have been customized.

On the other hand users are getting more and more used to the service level and speed of development they know from the apps they use in their private life, from the app stores of Apple, Google and Microsoft. This can lead to considerable frustration on both sides, the user and IT.

Moreover corporate IT departments are under constant pressure from cloud service providers to be displaced in their previous home turf of e-mail, file and collaboration services.

A paradigm shift is required to enable corporate IT to bridge the gap between existing applications from the era of mainframe and client-server (lately dubbed the 1st and 2nd platform, respectively) and current expectations nurtured by cloud and mobile applications. A new generation of applications that is developed based on agile principles, that is built to scale and that runs on a flexible, highly automated, “the 3rd”, platform.


Three key elements of agile development

When it comes to software development, two requirements are never the same. There is a need to have a solution, which guarantees the customers the individuality they require for the entire Application Lifecycle Management – from business analysis and transparent, agile project processing to a comprehensive service. In order to address these needs, complete solution packages have been developed (examples include mimacom path™), providing methods, toolchain and technology for development of so-called 3rd generation applications.  When companies implement an agile approach they are able to quickly respond to changes, build lean processes and rapidly implement and adapt to individual requirements.

As the methods themselves often improve the transparency, efficiency and flexibility of an organization’s processes, a toolchain is required in order to support and automate the required software engineering processes. These can include controlled code-reviews, automatized build, release and testing, continuous deployment or delivery. As the mechanisms themselves are not brand new to enterprise IT, deployment of this infrastructure to cloud provides flexibility and reduces complexity and effort of IT departments. With this approach, the development departments can focus even more on application development and business logic, instead of software engineering topics.

After method and toolchain, a choice of technology is the 3rd key success factor for efficient software engineering. Open source technologies offer considerable benefits and are a match for commercial software in every way. In fact, when it comes to an agile approach, open source technology scores highly. Ongoing development, easy integration and the option to customize the product, characterize our open source solutions. Usage of open source has multiple benefits, including a modern and versatile application stack based on open standards, technologies, which are constantly being developed, competent partners, who are committed to open source concepts and are close to the community. Last but not least you can access experts, who are directly involved in developing these technologies and who can implement this know-how practically.


Characteristics of the 3rd platform

In order to fully leverage the benefits of applications built on these principles, a suitable application platform is required that provides the same scalability and flexibly offers developers the application services they need while at the same time offering a level of standardization that supports efficient operation and maintenance.

Today developers often still need to build their own application environments based on their requirements, as their IT department is not able to provide the resources within the required time frame. This not only takes time that would be better spent on actual development tasks, but keeps these environments out of the control of corporate IT, on desktop servers or even public cloud services like AWS. This leads to further issues when these applications are put into production as they then need to be adjusted to the corporate IT environment.

To deal with these issues, open PaaS solutions (examples include Redhat Openshift and Pivotal Cloud Foundry) have been developed that allow enterprises to build internal PaaS offerings for their developers and thus provide them with pre-defined, sometimes also customizable, environments that include the middle-ware and services (e.g. data or messaging services) necessary to deploy and run applications. These can then be moved flexibly between dedicated resource pools for development, quality assurance and production, depending on the current development phase. Usually deployed on an IaaS- or a private cloud-environment, standardization and flexibility are extended all the way down to the hardware level, making it much easier to include public cloud offerings for temporary workloads as well.



There is a clear benefit on both sides – IT infrastructure gets better control of development environments, which not only allows better cost control and planning in infrastructure and operations, but also improvements with regard to security and availability of the whole environment. Developers on the other hand are freed from the need to build and maintain their own development environments and can focus on what they do best – building innovative applications that help the business maintain a competitive edge and provide new and improved services to users.