The Mobile Solutions and OSGi competence center of akquinet is specialized in the building of mobile and modular applications. They has developed a high expertise in two different domains:
- Service-Oriented Architecture (SOA)
- Mobile Technologies
Despite they sound different, mixed together it creates a very interesting recipe. Indeed, it provides a new, flexible and efficient way to create mobile systems by infusing service-oriented concepts into mobile technologies. This post presents the motivations of such mix. The next post describes how this recipe was successfully already used.
The rising of the new generation of mobile devices paves the road to new innovative applications. For example, a field worker has access to all your technical information and also to all the work already carried out. This improves your efficiency on the field, avoids redundancy, and issues due to insufficient information. Moreover, it enables new business area, such as remote system maintenance.
In comparison to desktop devices, mobile devices have significantly fewer resources and the network connection cannot be guaranteed. Moreover, the maintenance, the update of software components and the provisioning of new features is quite challenging on mobile devices.
Mobility is becoming a must-have property in any system in order to improve its efficiency. It allows IT to cross the boundary of the company compound and to be infused in the physical world. Mobile solutions are not only the mobile part, but contain also the server-side part dealing with mobile devices and the wires between the devices and the IT.
The Mobility Challenges
Being mobile is great, but is challenging!
First, the connectivity is not guaranteed. Mobile devices have now unlimited access to the Internet, however unlimited does not mean at any time. However, connectivity disruptions can happen at anytime. So the application has to handle such disruptions.
Mobile devices have smaller resources and screens than desktop. Moreover, user interactions are quite different. So, before being displayed on the mobile device, data must generally be filtered, processed, adapted in order to ease its reading and manipulation. Mobile devices are also great to collect field information. But the user has to be stringently guided during the collection to avoid mistakes.
Another problem is the fragmentation of the mobile market. There is A LOT of different devices. iPHONE and Android phones provide almost similar capabilities but are definitely different (not only in term of development and distribution). Providing global solution requires a good knowledge of the difference between such models.
One too often forgotten issue is the scalability. This issue occurs on the ‘server-side’. This side receives and provides the data from and to the devices. But, as in any system, rushes can happen. Depending of the application, losing data or increasing the response time are not viable solutions.
Finally, the provisioning and the evolution management are quite complex. Provisioning mobile applications means deploying components on the server part, on the mobile devices and also on the middleware used by the server and the devices to interact. Supporting these three parts is definitely complex and required different deployment technologies. Obviously, managing the evolution of such system is also complex as the nodes become heterogeneous very quickly.
This list is just an unordered and raw list of challenges. But concerns like security and autonomy have to be managed too.
Where Service-Oriented Architecture comes into the picture
Despite SOA does not solve all the issues listed above, it simplifies the way mobile solutions are designed and developed. The loose coupling promoted by SOA is one of the key points of modern applications. This is also true for mobile applications. It simplifies the reuse of existing services, allows abstracting implementations details, and eases the composition of mobile solutions.
SOA can be used in several locations in mobile solutions:
- On the device part, where the applications can rely on features provided by the operating system or by others applications. iPHONE and Android promotes such kind of integration. As an example, an application does not have to contain the “take a picture” functionality, but can just use the “take a picture” service provided by the operating system (OS), which deals with the built-in camera.
- On the server-side, SOA has already demonstrated its utility. By relying on decoupled (local or remote) components, enterprise applications won in term of modularity, maintainability and clarity.
- The middleware used between the mobile devices and the servers may also use services. It is typically the case inside Enterprise Service Buses (ESB) or data mediation middlewares.
SOA on devices
As previously said, the new generation of mobile devices such as the iPHONE and Android phones promote the reuse of existing functionalities by providing SOA-like interactions. These operating systems provide services to access built-in features of the phone.
Android made a big stride in this direction. Android promotes component-based development. The components are loosely coupled. An intent mechanism allows components to interact together. When a component wants to use any other features, it describes an intent and then invoke it (the invocation depends on the type of targeted component). Moreover, Android proposes the concept of service for background task.
SOA on the server-side
Using SOA in enterprise application became very common. The majority of new enterprise applications follow this trend: components of the application use remote or local services. This allows separate evolution of the different part of the application, as well as a clear separation between the functionality and the implementation.
The popularization of the web services had a great impact on the development of such applications. More recently, the emergence of Enterprise OSGi and OSGi-capable application servers (such as OW2 JOnAS) is also impacting such development. Applications developed on these frameworks are modular, service-based and dynamic.
SOA in the communication middleware
The last part in mobile solutions is the middleware used between the devices and the server-side. This middleware is responsible of the communications between the two edges of the system. Such middleware has to be very flexible as it’s a critical part of the system. A bad choice here will be definitely fatal for the whole system.
This middleware does not manage only the transport, but can also ensure QoS (quality of service), support security, pre-process messages, and help to be scalable by dispatching event in a smart way, etc.
Nowadays, using Enterprise Service Bus and Mediation Middleware became more and more popular. Both are generally service based, and components (called mediators) involved in the message processing are loose-coupled and may rely on external (remote) services.
This post has presented how Service-Oriented Architectures may help the design and the development of mobile solutions. The complexity involved in mobile system is far to be easy to manage efficiently. Thanks to SOA, it clarifies how the system is composed and who is responsible of what. Despite SOA does not solve all the previously mentioned issues; the gain is definitely not negligible.