The Platform-as-a-Service for the Agile Enterprise
If you have been wondering why I was a bit quiet lately… it was for the good cause! Today we launched the third major release of the Mendix platform, which is quite a memorable moment. My team did an awesome job and when I look at the result I can only feel proud! As I have been sharing a lot of my thoughts last years, I want to take the time to explain to you what Mendix 3.0 is all about.
If you remember one of my posts a couple of months ago, you could have seen the first glimpses of our focus with this release. In my article / presentation “Why there is no future for MDD” I tried to explain that we need more than just Model-Driven Development (MDD). What we need is an approach to the full application lifecycle, not only development. MDD is necessary (in my opinion), but not sufficient. We need Agile Application Lifecycle Management (in which MDD is one of the enablers) to solve the challenges enterprises are facing nowadays.
Mendix 3.0 (or to say it as our marketing guys like it: the version 3.0 of the Mendix Agile Business Platform) is all about supporting the agile application lifecycle, from a first idea to a working application, and from a working application to long-term business agility (i.e. the evolution of an application along with the business).
Let me take one step back and explain to you the full story of our new release. Please bear with my enthousiasm as it sometimes leads to praising my own products
– Edward V. Berard
Most enterprises are continuously striving to increase “Business Agility”. Business agility is the ability of an enterprise to adapt rapidly and cost efficiently in response to changes in the business environment. James McGovern stated it nicely: “Increasingly, the stability of an enterprise is rooted in its ability to be dynamic, to move fast and change quickly“. Time-to-market of new products, processes, and services is key to the survival of enterprises.
For enterprises to become agile a lot of things have to become more flexible. This doesn’t only ask for changes in the structure and behaviour of an enterprise itself. As the level of automation in most enterprises is only increasing, the role of IT is an important factor in enabling business agility. However, enterprise IT isn’t known for its ability to be agile… existing IT back-end systems cannot cope with constantly changing business needs.
On top of that, IT needs to become more business oriented. Trends like cloud computing and an increasing demand from users to replicate consumer IT simplicity in the enterprise, ask for a new view on enterprise application development. We see a trend towards App Stores and Business Unit Application Development (e.g. spreadsheets, Microsoft Access, Lotus Notes, cloud applications), which are great ways to give business people more tools to create innovative new IT uses. This, however, confronts the IT department with significant risks like governance, integrity, and security. IT must find a way to control the app-jungle, so to speak.
The main challenges for an enterprise yearning for business agility can be summarized as:
- The business needs to become more responsive to change and wants to focus on the business side of IT enabled by App Stores and cloud-based solutions.
- The IT department needs to leverage and extend IT legacy and wants to control the app-jungle resulting from an increase in Business Unit Application Development.
The Mendix Agile Business Platform fulfills these wishes of both business an IT by providing a Platform-as-a-Service (PaaS) offering the right set of tools to enable agile application lifecycle management.
The application lifecycle
- Kent Beck
Let’s take a closer look at application lifecycle management (ALM). ALM is a continuous process of managing the life of an application through all its phases. ALM tools need to facilitate and integrate requirements and release management, development, deployment, maintenance, etc. We want to explain this process, the needed tools, and how we facilitate it in more detail in this section, but let’s first look at the agile moniker we’ve put in front of ALM.
What do we mean with agile application lifecycle management? In 2001 seventeen people met in Utah to find some common ground to uncover better ways of developing software. They came up with the, since then historic, Manifesto for Agile Software Development, which emphasizes individuals and interactions, working software, customer collaboration, and responding to change. Agile approaches, often referred to as “lightweight” approaches, focus on delivering software in relatively short iterations while requirements evolve through collaboration. From a technical perspective things like continuous integration, test-driven development, refactoring, etc. are needed to keep the implementation agile.
We think ALM needs to be grounded in the principles of agile software development to provide us with the flexibility we need to enable business agility. The only way to really improve software engineering is to create shorter feedback cycles, to increase collaboration with all stakeholders within a software project. That’s why our platform emphasizes an agile approach. In fact, we learned that the design decisions in our platform are a key success factor in delivering agile success to customers.
As visualized in Figure 1 we see the application lifecycle as a circle with four phases: capture, develop, deploy, and iterate. Besides these steps we think it’s important to manage the process and its outcomes. We will explain each phase in more detail in the next sections.
A new application (version) usually starts with a first idea. This idea is crafted and detailed by discussing it with stakeholders, resulting in a set of requirements. These requirements are captured in user stories (i.e. lightweight use cases) which need to be refined and prioritized. Crafting a single user stories often involves a lot of discussion among stakeholders. It is important to support the process of (co-)creating, refining, and prioritizing user stories properly to facilitate conversations and documenting the process in the mean time.
Furthermore, user stories need to be estimated and planned in sprints. The project team needs to be facilitated with the tools to plan releases and sprints as well as monitoring tools like agile status boards and burn-down charts. As agile project approaches are gaining traction we feel the struggle of teams to properly apply the principles. We think that such teams, besides proper training and a mindset change, need the right tools, fully integrated in the application lifecycle.
Once a sprint is fully defined and the team committed to the work and deadline it is time to start developing the application. In this phase it is again important to use the right techniques to properly support an agile lifecycle. This means the way of working during development should promote communication, productivity, quality, and short iterations.
We learned that Model-Driven Development (MDD) boosts productivity as high-level modeling languages can be used to develop applications. These languages are automatically executed on advanced engines thereby by-passing the need to use labour-intensive, low-level programming languages. This also ensures short feedback cycles as the result of a model change can directly be tested in the actual application. If these modeling languages are visual (as opposed to textual) they can even provide an excellent communication mechanism to align business and IT stakeholders. That’s why we believe MDD is an essential ingredient of agile ALM.
In principle you could say you don’t develop an application, but you compose the building blocks in the Mendix platform as well as existing systems into an application using a visual language. In combination with an AppStore providing templates, widgets, plugins, and even complete business components, developing an application is more and more the art of composition.
The next step in the life of an application is to deploy it for (acceptance) testing or production purposes. Deployment sounds like a lot of hassle, and traditionally it is. Hardware, configuration, performance, scalability, involvement of other departments, etc. If your development process was agile it is jammed by now.
In our opinion cloud deployment is essential in providing agile ALM. Deployment shouldn’t be more than a single click, with which you upload your application model to a cloud environment, resulting in a working application. We call this Model-Execution-as-a-Service. The cloud platform executing the application models should free you from sleepless nights about availability, security, performance, scalability, and other issues like these, which you often only discover after your application has been taken into production.
Some people seem to think that we are ready now. The application is running in production, end-users are using it and we have popped the champagne. Nothing is further away from reality! The process has just been started. Only when an application is used in production end-users will start to see the impact and think about improvements. Furthermore, the business process your application supports is probably not fixed. If we want to support business agility we need to provide a mechanism to gather feedback and to turn that feedback into a new application version. In other words: we need to gather feedback and use that as input for the next cycle of capture-develop-deploy-iterate.
Since the use of high-level, visual languages for developing applications enables domain experts to be part of the development process we see an increase in so-called Business Unit Application Development. This shouldn’t be something to be afraid of. The cloud platform running the applications ensures availability, security, performance and scalability (as mentioned before). In addition it gives the IT department the right tools to manage all the applications within an organization from a single dashboard. IT can enforce workflows around deployment, testing, and configuration. In short: IT can control the app-jungle!
- Alan Kay
Mendix provides the Agile Business Platform to fully support agile application lifecycle management. From your first idea to a working application and from that working application to long-term business agility. The Agile Business Platform consists of 3 seemlessly integrated products: sprintr, the Mendix AppFactory, and the Mendix Platform-as-a-Service. Figure 2 gives a brief overview of the 3 products.
Figure 2 – Mendix Agile Business Platform, product overview.
Sprintr takes a lightweight, social approach to enterprise project collaboration. We believe that engaging and empowering people facilitates collaboration and therefore co-creation in any organization. Sprintr offers a unique combination of project management tools and social activity streams, offering a way to interact with colleagues, project team members, and even external people involved in projects.
By providing a collaboration platform across the enterprise, sprintr breaks down the walls between the different departments and professions. All employees are part of the same private social network and share a wall showing all the “company buzz”. Conversations can be started and turned into ideas. Ideas are organized using a voting system and can be converted into projects. Sprintr offers all the tools you expect from a social network, including two-way email integration.
Besides being a powerful social platform, sprintr also offers the tools to manage your projects in an agile way. The social backlog management tools enable project team members and stakeholders to collaborate and to create, refine, and prioritize user stories. Each user story has it’s own conversation thread which is also published on the wall to have an intuitive mix of the company buzz and the project activity streams (i.e. of unstructured and structured data). User stories can be estimated and planned in sprints. The planning overview gives team members and stakeholders the ability to monitor the progress of the current sprint using scrum boards and burn-down charts as well as to plan sprints and releases to define the future of the project.
Sprintr can be used separately from the other Mendix products and it’s feedback widget can be included in any web application. Sprintr offers an open, well-defined API enabling third-party developers to create their own feedback widgets, plugins, and any other innovative product they come up with. Take the tour for a more detailed explanation and screenshots!
The Mendix AppFactory gives you the ability to develop an application by using high-level visual models. This enables collaboration between business and IT, but also provides extremely short feedback cycles as the AppFactory supports one-click deploy of your models. The Mendix AppFactory consists of 3 elements:
- Mendix Business Modeler: a modeling environment to design and develop your application using visual models.
- Mendix Team Server: a cloud-based model repository to collaborate with team members and version your models. The Team Server is implemented as a plugin to sprintr to create a tight integration between models and requirements.
- Mendix AppStore: a community marketplace to share and download business templates, widgets, themes, and technical components.
The combination of elements in the AppFactory, as well as their integration with sprintr, really empowers business engineers to be more productive in delivering complex enterprise applications.
Mendix Business Modeler
Rooted in the techniques of Model-Driven Development (MDD) the Mendix Business Modeler is a high-productivity development environment for developing complex enterprise applications. An application can be modeled using high-level languages which are directly executable on our advanced run-time engines. This ensures short feedback cycles as the result of a model change can directly be tested in the actual application.
The Mendix Business Modeler is designed to deliver enterprise-level Service-Oriented Business Applications (SOBAs). Things like a multi-tenant security model, internationalization, flows, rules, and an advanced approach to extending the model with Java code are all built-in. Applications built using the Mendix Business Modeler can run stand-alone but are also easy to integrate with your existing application landscape. Each process in Mendix can be exposed as a webservice with a single click. Integration with webservices or XML is as easy as defining a visual mapping between the XML structure and your domain model.
As we are all about collaboration, the Business Modeler has excellent team support. It features version control on the visual model level as well as the possibility to track all changes both in your model and in external resources like Java actions and custom widgets. We provide the users of our Business Modeler with the full power of version control including advanced features like branching and merging. The intuitive conflict resolution mechanism assists you in merging all kinds of model changes even if another team member changed the same property as you did.
Written on top of Subversion and delivered as a plugin to sprintr our Team Server is designed to make the life of a Mendix Business Engineer easier. The Business Modeler is tightly integrated with the Team Server and things like creating a new project (including a versioned model repository), updating, commiting changes, merging model versions, etc. are all available from within the Business Modeler as a single click action.
The Team Server is delivered as a plugin of sprintr for a reason: it enables you to manage Team Server access from sprintr and it enables us to provide you with a revolutionary way to combine requirements, implementation, and feedback! When you commit application model changes to the Team Server from within the Business Modeler you can select the user stories (reflecting requirements) you have been working on. The Team Server will automatically create links between these user stories and the model changes you made, providing you with a way to navigate from commits to the associated requirements. Further more, with these links we create a link from a user story to a changeset and a changeset can include a link to form (if you changed a form in the changeset). While feedback also refers to a form, we can create links between feedback, forms, changesets, and user stories.
The Team Server also connects the capture and develop phase of the agile application lifecycle. When you start working on the next version of your application you just open the Mendix Business Modeler to see the user stories planned for the current sprint and start working on them. If a user story is based on user feedback, you can directly jump to the form mentioned in the metadata of the feedback and start implementing the requested change.
The AppFactory also includes a community AppStore, fully integrated with the Business Modeler to enable 1-click downloads of business templates, widgets, themes, and technical components. Mendix community members are using the AppStore as a platform to share business templates or extensions to the Mendix Platform. Most of them are open source, but the AppStore also features commercial templates as well as full-blown business applications.
Business templates range from small, handy model templates like an enumeration with all countries or an South African ID number validator, to complete business applications like service management solutions, Product Data Management for the Fashion Industry, a HR on-boarding portal, a carbon reduction suite, and many more industry-specific business templates.
With the widgets available in the AppStore you can build amazingly rich user interfaces. Widgets are build on top of the Mendix AJAX client API which is open for everyone. The AppStore contains lots of widgets, like Google Maps, rich text editor, all kinds of charts, tree grid, document viewer, twitter, just to name a few.
The technical components in the AppStore extend the Mendix Platform by building on it’s open API. The AppStore contains a lot of useful to integrate with Microsoft Exchange, Excel, LDAP, Kerberos single sign-on, database replication, iDeal, etc. But also components like an audit trail module and a license pool module to manage SaaS subscriptions.
The core of our technology is our innovative cloud platform: the Mendix Platform-as-a-Service (PaaS). The Mendix PaaS gives you the ability to provision your applications in the cloud and manage them from a central dashboard. The Mendix Cloud Dashboard is easy to use and provides an interface to the power of the advanced Mendix multi-tenant cloud architecture.
Deployment of an application is as easy as uploading your application model to the Mendix PaaS from within the Mendix Business Modeler with a single click. The application model is provisioned in one of the available AppContainers and converted into a working application by executing it on our advanced run-time engines. We call this process Model-Execution-as-a-Service.
An application running on our platform consists of multiple AppContainers representing a test, acceptance, and production environment. The Mendix Cloud Dashboard provides users with an easy transportation workflow to move application model versions up to the chain from test to acceptance to production, without touching the model.
Availability, security, performance, and scalability are provided by the platform and easy to manage for all your application from the Mendix Cloud Dashboard. The dashboard provides graphs with the scope of a day, week, month, and year showing all kinds of monitoring information like the number of active users and resource utilization. Alerts can be configured to warn you if some metric approaches a critical level or if your custom defined application health-check gives a warning.
The Mendix PaaS is both closed and open at the same time. Closed due to its advanced security and access control. Open because it features easy-to-use backup management enabling to retrieve and restore your data at any moment, and because it features open APIs to interact with you application at runtime enabling, for example, to create integrations with any existing system.
We provide you with the PaaS that runs everywhere. Our platform can run on any infrastructure and flexibly scales out over different infrastructure types, both delivered as a service and on-premise. Due to the advanced multi-tenant architecture the platform utilizes your infrastructure resources in an optimal way.
I think we did take a huge leap forward with our new product suite, but don’t take my words for granted! Let me know what you think in the comments, visit the what’s new page with more details, or give some ideas for future improvements! One thing is for sure: we will go on with our journey to create the tools to make it actually possible to deliver the software an agile enterprise needs