A distributed modular platform for the development of cloud based applications

A distributed modular platform for the development of cloud based applications

Future Generation Computer Systems ( ) – Contents lists available at ScienceDirect Future Generation Computer Systems journal homepage: www.elsevi...

4MB Sizes 236 Downloads 166 Views

Future Generation Computer Systems (

)



Contents lists available at ScienceDirect

Future Generation Computer Systems journal homepage: www.elsevier.com/locate/fgcs

A distributed modular platform for the development of cloud based applications G. Fylaktopoulos a , M. Skolarikis a , I. Papadopoulos a , G. Goumas b , A. Sotiropoulos c , I. Maglogiannis d,∗ a

B-Open S.A., Laskaratou 11A Thessaloniki Pylaia 54250, Greece

b

Computing Systems Laboratory, National Technical University of Athens, Greece

c

GRNET S.A., Kifisias Av. 7, 11523, Athens, Greece

d

Department of Digital Systems, University of Piraeus, Greece

highlights • • • • •

A cloud IDE that supports Model Driven Development. Component-based application development and multilayer programming. Automatic database connectivity. Internal model and functionality repository are supported. Evaluation and comparison with existing systems.

article

info

Article history: Received 1 April 2016 Received in revised form 26 December 2016 Accepted 20 February 2017 Available online xxxx Keywords: Cloud based development Model Driven Development Cloud Integrated Development Environment

abstract In this paper we describe the CIRANO platform, a modular Integrated Development Environment (IDE) for cloud based applications. The proposed platform is built to support Model Driven Development (MDD) and team collaboration, facilitating the rapid development of advanced applications in the cloud. The paper presents at a first stage the state of the art in the field of cloud IDEs and describes the design, implementation and technical details of the CIRANO platform. The main features of the proposed platform are presented in two case studies concerning the development of an application from scratch and porting of an existing application. The paper discusses the findings in comparison with existing tools and proposes extensions of the platform as future work. © 2017 Elsevier B.V. All rights reserved.

1. Introduction Nowadays, cloud computing is recognized as a dominant computing model in IT infrastructures, enabling flexible, ubiquitous, on-demand and cost-effective access to a wide pool of shared resources [1]. It is generally noticed that large and diverse organizations have adopted the cloud paradigm for their information systems, enjoying the following two key features: low costs by releasing them from the burden to invest on hardware infrastructures and software licenses, and reduced operational complexity,

∗ Correspondence to: University of Piraeus, Grigoriou Lampraki 126 Piraeus, Greece. Fax: +30 2104142517. E-mail addresses: [email protected] (G. Fylaktopoulos), [email protected] (M. Skolarikis), [email protected] (I. Papadopoulos), [email protected] (G. Goumas), [email protected] (A. Sotiropoulos), [email protected] (I. Maglogiannis). http://dx.doi.org/10.1016/j.future.2017.02.035 0167-739X/© 2017 Elsevier B.V. All rights reserved.

as organizations are able to focus on the quality of their products and services rather than on the management of complex IT systems [2]. Furthermore, scale economy drives additional decrease in total cloud infrastructure costs, as numerous small-scale and typically underutilized data centers are replaced by larger infrastructures that target higher resource efficiency. On the application side, large families of applications including desktop, business and entertainment, have found their way to the cloud creating a demanding and fast evolving new ecosystem [3]. The proliferation of the cloud paradigm has created a strong trend to transfer traditional services and applications to the cloud. In this context, software development environments are a critical application domain that has also gained significant popularity through its ‘‘cloudified’’ versions. Transferring major services and applications to the cloud has created new demands for productive software development. Cloud concepts and technologies provide a valuable substrate to support software development environments

2

G. Fylaktopoulos et al. / Future Generation Computer Systems (

List of Acronyms aPaaS Application-platforms-as-a-service CCIM CIRANO CIM CIM Computational Independent Model CPIM Cirano PIM CPSM Cirano PSM CSS Cascading Style Sheets DNS Domain Name System HAProxy High Availability Proxy HTML HyperText Markup Language IDE Integrated Development Environment JRE Java Runtime Environment JSON JavaScript Object Notation JVM Java Virtual Machine LAN Local Area Network MDA Model Driven Architecture MDD Model Driven Development MVC Model View Controller OOP Object-Oriented Programming PIM Platform Independent Model PSM Platform Specific Model REST Representational State Transfer RPC Remote Procedure Call SOAP Simple Object Access Protocol UML Unified Modeling Language VPN Virtual Private Network WebRTC Web Real-Time Communication XML Extensible Markup Language

‘‘in the cloud, for the cloud’’ as they can easily provide an ample pool of compute resources for code development and testing, and code repositories to support developer collaboration, a key driving force to software productivity [4]. Traditional software development employs a tool chain including a text editor, a compiler and possibly a debugger, and performance analyzer. To accelerate software development, this rather disjoint tool chain is incorporated in an Integrated Development Environment (IDE) [5]. In order to further reduce time to market and development costs, software engineers heavily encourage reuse of existing software components in order to create new services. To build a successful cloud programming environment, the advantages and functionality of traditional, desktop-based IDEs need to be maintained and augmented with additional features and strengths. Powerful code editors with a rich functionalities set (e.g. highlighting, autofill, etc.) are incorporated in web browsers. Compilation and testing execution are performed on cloud infrastructures and in several cases cloud providers can support deployment. Clear advantages of cloud-based IDEs include: (a) the access to wide pool of programming tools that are maintained by the provider, thus relieving the developer from the burden to setup, configure and upgrade their programming environments, (b) the ability to develop software without the use of powerful local computers, since the frequently compute-intensive tasks of the compilation and testing are performed elsewhere, and (c) the straightforward way to reuse code developed by other software engineers that share the same cloud environment. In addition, Model Driven Development (MDD) can be valuable for cloud development environments. MDD is a SW development paradigm, where the analysis and development cycles are based on the creation and evolution of code or data models. Models are not just theoretical representations of entities, but primary artifacts of development through which developers design, implement and

)



interact with actual behavior of their software [6]. The benefit is a higher level of abstraction, which is required in the cloud in order to be scalable and agile. Also, the independence that MDD offers is considered a major advantage of a Model Driven Architecture (MDA), when designing a cloud based information system. In this paper we present CIRANO, a cloud IDE that substantially supports MDD to facilitate the development of cloud applications. Beyond common functionality existing in modern IDEs like enhanced editors, debugging tools and support for popular databases, CIRANO supports (a) component-based application development, (b) multilayer programming, which greatly facilitates the online collaboration between developers, (c) automatic database development and connectivity and (d) an internal model and functionality repository. The paper presents the implementation and the technical details of the proposed CIRANO platform, along with an initial evaluation and comparison with existing systems. The paper is an extension of [7], which was presented at the Cloud Forward 2015 conference and contains a more detailed description of the CIRANO technical details along with a deeper evolution of the platform in practice. The rest of the paper is organized as follows: In Section 2, we provide an overview of the existing Cloud Based Development Solutions. In Section 3, we describe the implementation of the proposed CIRANO platform, while in Section 4, we discuss its operation in practice presenting two case studies: development of an application from scratch and porting of an existing application. Finally, Section 5 concludes the paper. 2. Related work and background information Cloud based development refers to the replacement of the developer’s classic desktop workspace with a set of cloud tools and components, which are accessed from any web browser at any time. Such a centralized workspace can be easily shared with other development teams or independent programmers, facilitating codevelopment. Any modern cloud based platform should include the following basic tools: a programming IDE, a local build system, a runtime environment, a database, some models, connections among them and descriptions of their dependencies. However, as developers use a wide range of programming languages and external utilities, it is impossible to gather everything in the cloud. These can be categorized as follows: Cloud programming environments are online web based platforms designed to offer development capabilities, replacing the existing desktop default source code editors, pre-compilers, compilers, interpreters and linkers. They offer a wide range of programming languages in a browser environment which resembles a classic desktop development use-case. Apart from the default features and due to high competition, programming environments have evolved offering collaboration features like simultaneous source editing, connectivity with the most well-known repositories, virtual machines as runtime containers, server provisioning and selections of virtual machines with pre-installed services like databases and application servers [8–10]. Cloud repositories are web hosting services that leverage the strengths of well-known version control systems such as Git, Subversion and Mercurial. They are distinguished by the extension they offer, such as bug tracking, release management, integration with third party software, collaboration features and wiki-based documentation. Cloud SW modeling tools refer to applications used to describe the functional and non-functional requirements of a project. Usually, they include a variety of design tools for graph creation and process representation. Their target is to imprint the architecture of an information system, a process and an interface or a component.

G. Fylaktopoulos et al. / Future Generation Computer Systems (

The most well-known language used by desktop development tools is UML (Unified Modeling Language). Most of the desktop IDEs support plugins for UML diagrams (like Rational Rose and BOUML), however there are open source tools like Argo UML and StarUML, which have been widely used for desktop applications. Cloud modeling tools continue supporting UML, but also offer a more flexible design format using the latest web technologies and adding new shapes, 3D graphs and even movement in the design. Cloud SW composition tools try to integrate all the required tools for development in a complete and concrete cloud solution. They cover all phases of an application’s coding lifecycle, offering tools not only for code editing, compiling or interpreting, but also for debugging, testing and maintaining the source code in an internal or external repository. These tools are often referred to as Integrated Development Environments—IDEs and have enjoyed great acceptance in desktop applications, because of their user friendly interfaces and intelligent code management (live syntax debugging, code optimization, ready UI components and libraries). Some of the most commonly used desktop IDEs are: Visual Studio, Eclipse and Netbeans. Cloud SW processing and documentation tools are critical parts of software lifecycle is the editing and maintenance of the application’s documentation. In a cloud environment, where the whole system is subject to rapid changes, the need for an integrated hub of help and reference information is highly required. Recent cloud solutions include ‘clever search’ features, collaborative editing, integration with file sharing tools and exports in a variety of formats (HTML, PDF, CHM). Cloud management and orchestration tools are also significant components of the software lifecycle. They possess the ability to monitor the application and perform the necessary actions to provide high availability, taking advantage of the two main cloud features, i.e. elasticity and scalability. Orchestration tools provide utilities for both hardware and software monitoring, with alert notification systems and a set of sophisticated analytics and automations. Their target is to offer high availability, reduce the application delivery time and minimize the cost of resources. Table 1 indicates the main Cloud IT operational areas, along with Cloud software tools for each category. In Table 1, there is a summary of existing cloud platforms, covering a range of functionalities depending on their category. Among other features, there is a critical distinction between those that are available as cloud services and those offered as on premise solutions as downloadable software. The next column, ‘Mobility’, shows that some of the competitors have also entered the mobile market, which has become a trend the last few years. However, most of them are in a very early stage, offering a limited set of features (i.e. only connectivity with mobile frameworks). Although there are numerous solutions in each category, it should be noted that some of them cannot keep up with the rapid cloud changes. For example, Akshell [11] and JavaWIDE [12] focused solely on offering programming environments without any deployment capabilities and soon became obsolete. Also, there is a clear absence of Cloud SW composition tools. Their role is covered at the moment partially by the programming environments. Moreover, current solutions provide limited support for modeling, which are not fully incorporated in a development environment to provide an end-to-end MDD-based development chain. Finally, there is no integration available at the moment between a programming environment and SE processing, documentation, management and orchestration tools. The last two years, another category of application development platforms has appeared, trying to bridge the gap between businesses, software development companies and the cloud infrastructure. Application-platforms-as-a-service (aPaaS) [13,14] is

)



3

a service model like SaaS, which provides application developers with high-end tools, in order to create and deploy apps rapidly with minimum source code writing. They are not programming environments since they do not offer the default utilities like compilers, IDEs and source code editors. Instead, low level code, system architecture and VM management are hidden from the developers, so that they can focus in implementing the application business logic. Some of the features most aPaaS platforms offer, which are also their advantages compared to classic programming, contain the easy deployment directly to the cloud (or even the ability to download and install it on premises) and the collaborative development and model sharing among geographically distributed teams. More sophisticated platforms are able to offer the ability to any developer, irrespective of their experience, to create business applications, usually with visual model driven development, which further reduces the amount of time required for software development, from the analysis phase till the deployment of the software solution. An aPaaS service, as a cloud service, can easily be integrated with other cloud services, like repositories, or even be a part of a whole programming environment. On marketing and business terms, these platforms target business applications, an area of the software sector, which has been the least influenced by the cloud era, since most business applications remained in desktop versions. On the other hand, aPaaS comes with a price. The most crucial one is that developers who use an aPaaS platform are tied with it. They cannot migrate their code to another platform and they will always remain under their vendor’s shield. This lack of freedom is sometimes a big handicap for software developers. Furthermore, because of its immaturity, the tools offered by most current platforms provide limited functionality. Of course, this technology is still emerging, but productive enterprise applications require strong core components. Finally, one should not forget that a new programming way might be seen as a disadvantage. It took more than five years to persuade companies to migrate to the cloud. Software developers remain users themselves and are not keen on changing development habits, unless this is organized, promoted and guaranteed by a significant software vendor. According to a report by Gartner [15], the top aPaaS players are Salesforce and Microsoft. Salesforce is a leader in aPaaS at the moment, as it combines a proprietary software offered in SaaS with its platform to create extended versions of the same application and an app market called AppExchange, where developers can sell the applications created through the platform. It also offers a wide range of APIs, REST and SOAP services, as well as mobile development capabilities. Microsoft has launched Azure App Service, which is a promising environment for Windows developers, but still does not offer any of the aPaaS advantages apart from cloud deployment. Looking at the products of other players, IBM’s Bluemix can be placed somewhere between PaaS and a programming environment, since it offers instances, containers, java environments, databases and other services. In aPaaS terms, it mostly offers a path to the cloud for its existing customers with predefined porting tools. Google on the other hand with its Google App Engine, tries to enter the business market, basically offering integration with its well-known Google apps and a wide set of choices for cloud installation. However, it also lacks basic modeling and rapid programming tools, which could distinguish them within the aPaaS market. Examining the current aPaaS solutions one thing is clear. The market is divided in sophisticated solutions, which tend to be cloud programming environments, losing their aPaaS advantages for business development and light solutions like Mendix and Appian, which offer some basic tools but require further evolvement in order to cover a real productive development scenario. Also,

4

G. Fylaktopoulos et al. / Future Generation Computer Systems (

)



Table 1 Existing cloud platforms. Type

Name

Programming environments Cloud9 Codeenvy Codeanywhere

Cloud

On premise

✓ ✓ ✓



Mobility

URL



c9.io codenvy.com codeanywhere.net



Repositories BitBucket GitHub GitLab CloudForge

✓ ✓ ✓ ✓

Cloud SW composition tools Visual Studio Eclipse Netbeans

✓ ✓ ✓

✓ ✓ ✓

bitbucket.org github.com about.gitlab.com www.cloudforge.com

www.visualstudio.com eclipse.org netbeans.org

✓ ✓ ✓

Cloud SW processing and documentation ClickHelp RoboHelp HelpServer

✓ ✓ ✓



clickhelp.co www.adobe.com/products/robohelp.html www.helpserver.eu

Cloud SW modeling Gliffy Creately Genmymodel

✓ ✓ ✓



www.gliffy.com creately.com www.genmymodel.com

Cloud SW management and orchestration Azure Rackspace vRealize Nagios Zabbix

✓ ✓ ✓ ✓ ✓



✓ ✓ ✓ ✓

collaborative programming is seen only as collaborative document editing. However, in terms of development this is not enough. A whole new architecture is needed for development teams to be able to cooperate in a secure, agile and conflict free environment. In this paper we propose a modern aPaaS platform, which encounters some of the shortcomings of existing aPaaS platforms and programming environment, without compromising basic characteristics like simplicity, ability for rapid development, flexibility and scalability. More specifically, its model-based architecture makes the MVC (Model View Controller) pattern a standard programming procedure, rather than an optional feature, which is the case in other programming environments, where MVC is usually implemented using libraries. Thus, the first step of application development is to create data models using visualization tools without coding, which makes the code—data separation even clearer. Secondly, the platform introduces the concept of a ‘‘programming unit’’, in order to address the need for segmentation of large applications in smaller groups of features, which can be developed simultaneously. A programming unit consists of data models, code controller and view objects, while it can inherit models or code from other programming units. In a conventional programming language, a programming unit could be a package, which could contain classes or files. A set of programming units can be grouped, creating layers of units, which are stored in a hierarchical layered way, so that upper layers can interact with lower layers, inherit objects and add functionality as well. The application server reads programming units in a bottomup way, so that each user can reach a level of functionality depending on the access rights she has on the underlying layers. This multi-layered architecture lets developers customize their applications per user in a cloud environment, a task that is quite resource consuming even for desktop applications. Furthermore, it leads to a real collaborative development, since developers are also users in the same application. They also have access rights on layers and they can develop their layers independently,

✓ ✓

azure.microsoft.com www.rackspace.com www.vmware.com/products/vrealize-suite www.nagios.org www.zabbix.com

collaborating in a single application. Development teams can work simultaneously on the same application, in different programming units, in different or the same layers, inheriting other units from different layers and extending them. This is in contrast with collaborative editing, a feature provided by other programming environments, which is not very useful since it means that more than one developers are working on the same files, often leading to broken code, even using a version control system. On the other hand, the platform offers a range of ready data and user interface models, targeting mainly the business application development industry. These models combined with the given database management utilities can be used to automate the development process, creating programming units from database tables. The units created can be extended either by writing server side code, or by embedding client JavaScript components. Thus, it overcomes the limitations of other aPaaS environments and offers unlimited options for client side development, retaining a strong and robust backend. 3. The proposed CIRANO platform The proposed CIRANO platform is a novel cloud-based IDE and Application Runtime Environment that supports MDE in a unified way, promoting team collaboration and facilitating the development of cloud-based applications. In addition to common features and tools existing in most modern IDEs like enhanced editors and debuggers, CIRANO also offers development processes for automatic database creation and upgrade, application versioning and publishing to repositories. A combination of multi-layer programming and component-based application development is used to utilize platform’s generativity capabilities and achieve effective online collaboration between developer networks through the creation and reuse of modular and extensible applications and services. In the following subsections we discuss the technical and architectural details of the CIRANO platform.

G. Fylaktopoulos et al. / Future Generation Computer Systems (

)



5

• Document Objects: Each unit’s documentation is included in these objects.

Fig. 1. Platform components per layer.

3.1. Functional architecture The CIRANO platform follows the Model-Driven Architecture (MDA), defining three types of models for the representation of the functional and nonfunctional behavior of the system (see Fig. 2): 1. The Computational Independent Model (CIM), which is an abstract layer that describes the behavior of the application, without revealing any technical details. 2. The Platform Independent Model (PIM), which describes the system and its subsystems in a platform independent way, keeping the system free from installation limitations. 3. The Platform Specific Model (PSM), which extends the PIM, showing the details required for the system’s installation on a certain platform. Each of the aforementioned layers includes a number of available components. More specifically, CIRANO CIM (CCIM) includes the code model, which consists of the representation of the application’s business logic written in PlatonScript, the platform’s custom programming script language. Code is based on events (database or user-based events), the data model, which represents the unit’s data in a typical ER diagram and the page model, which defines the necessary UI for the user’s interaction with the data and the code model. CPIM defines the real time components that are dynamically created during runtime by the Application Server. These components include:

• Data objects: They can be any kind of data collections which are required by the unit’s specific functionalities.

• Filter objects: They are criteria and selectors which act on the data objects in order to filter their data.

• Code objects: Procedures written in PlatonScript. • User Interface Objects: Graphical components (like tables, forms, fields, graphs) which are connected with the data objects and presented to the final user. • Menu Objects: They specify the user access to application’s units.

Finally, CPSM contains the platform specific components used during CIRANO’s deployment. That includes the VMs or Docker containers, the OS—specific Java Runtime Environment, the appropriate Database instances and other servers that might be available. Examples of such servers are Email servers used to send and receive emails Conference Servers that enable real time communication and Web servers that process HTTP requests. The structure depicted in Fig. 2 is an example platform-specific model of CIRANO’s installation and deployment. Starting from the top, users can access CIRANO applications using any modern web browser. The requests are first received by an external pfSense firewall which provides network security, allowing only compliant requests to pass through. Afterwards, a stack of Apache Web Servers is used for load balancing, security (mod_security, mod_evasive plugins) and SSL offloading. Each Apache Server connects with a number of Tomcat servlet containers and forwards the requests to them, depending on their availability and taking into account CPU and Memory utilization. An application server resides behind each Tomcat and transforms the requests to an application functionality query or a database query. For stateful applications, an Application Server Cluster can be formed to replicate session information across the nodes of the cluster. Each Application server communicates with a set of CIRANO applications and each application owns at least one database schema in a certain database instance. In this deployment, the persistence layer is composed by MySQL database servers in Master–Slave replication configuration. In front of the database servers, there are HAProxy Database proxies for load balancing read request traffic over multiple slave nodes. The structure depicted in Fig. 2 reveals an example model of CIRANO’s installation and deployment. Starting from the top, users can access CIRANO applications using any modern web browser. For security reasons, the back-end infrastructure is not accessible from the Public Internet, in order to minimize the exposure to network attacks and hacking attempts. In this deployment scenario, pfSense [16]—a firewall oriented open-source FreeBSD distribution is utilized as Perimeter Firewall, LAN router, DNS and VPN server providing real time network traffic monitoring and reports. After all firewall checks have been applied, compliant incoming traffic is directed to a stack of Apache HTTP Servers (‘‘httpd’’). The modular architecture of these servers allows us to add plugins, extend their basic functionality and use them as reverse proxies, load balancers and web application firewalls. Regarding security, mod_evasive httpd plugin is used to provide evasive action in the event of an HTTP DoS or brute force attack. Application layer attacks can be addressed by Modsecurity, an open source web application firewall that can be plugged in to Apache to offer active detection and prevention of some of the most common attacks, such as Cross Site Scripting (XSS), SQL Injections and Parameter Manipulation Attack. In terms of performance, web acceleration techniques such as compressions, caching and SSL offloading are employed as well as load balancing policies, that define in which Tomcat servlet container pool the requests are going to be forwarded, taking into account the available computational resources. An application server resides behind each Tomcat and transforms the requests to an application functionality query or a database query. For stateful applications, an Application Server Cluster can be formed to replicate session information across the nodes of the cluster. Each Application server communicates with a set of CIRANO applications and each application owns at least one database schema in a certain database instance. In this case, MySQL

6

G. Fylaktopoulos et al. / Future Generation Computer Systems (

)



Fig. 2. CPSM architecture.

database servers in Master–Slave replication configuration compose the persistence layer. In front of the database servers, there are Database proxies (HAProxy [17]). HAProxy as a MySQL load balancer works similarly to a TCP forwarder and its feature set includes health checks for the monitored servers, failure detection and request load balancing. Read–write request splitting is also applicable by forwarding write requests to the Master node and read requests to all Slaves using round robin load balancing. Since HAProxy operates in the transport layer of TCP/IP model, the distinction between read and write SQL queries is made by the Application Server, which forwards the requests to the proper HAProxy instance, configured to manage only the Master or just the Slave nodes. 3.2. Physical architecture As illustrated in the overall physical architecture (see Fig. 3), CIRANO Ecosystem consists of numerous units. The application

Server plays a key role in this topology, as it manages business logic, accepts and controls third party connections and services, or provides services for other systems to consume. It also manages the deployed applications and controls user authentication and authorization. The CIRANO Application Server is a complex structure that contains the following modules and subsystems:

• The Application Session Manager, which handles functionalities and data stored in the context of a session, until it has expired.

• The Multi-tenancy module provides reusability of shared resources among users, like database metadata, and is a necessity for cloud environments. • The User Management Module creates user tenant environments, controlling user’s access on the application’s resources and functionalities • The Application Architect collects Application Components from local or remote repositories, integrates them and then loads the output multilayered Application.

G. Fylaktopoulos et al. / Future Generation Computer Systems (

• The Application Object Loader reads Application’s definitions and models and creates objects needed on the application runtime. • The PlatonScript Interpretation Module performs script commands and offers the platform’s API to develop the application’s business logic. • The Java Plugin Manager uses a set of platform plugins to extend platform’s functionalities. • The Presentation Manager generates user interfaces. Various servers and systems accompany the Application Server to form a feature rich environment for application development and deployment (see Fig. 3). The Database Connector has been developed to make the platform database-agnostic and support several vendors’ Database Management Systems. It supports Relational, NoSQL and Memory databases and uses pooling techniques for efficient resource management. Additionally, a Database Connector Agent can be installed on remote systems; collect data from any data source and communicate with different software applications, legacy systems and custom-built programs. It can then transmit the data to a Database Connector, acting as a bridge between data providers. To further enhance platform’s integration and communication capabilities with third party systems, the Web Service Manager can create, offer and consume SOAP, REST and RPC web services. These services are also used by Device Agents, which connect to different types of sensors and transmit their data to a CIRANO Application rendering the platform IoT ready. Even though most databases can handle file storing to some extent, a CIRANO developer might prefer an off-database location for persisting the application files. For that reason, File System Servers are built and are capable to store and retrieve files from local filesystems, distributed object stores and other 3rd party file system services, such as Amazon’s S3, through the use of their Web API. One of the supported object stores is Ceph [18,19], an open source distributed object store and file system designed for high performance, reliability and scalability. Some of the benefits using a Ceph cluster is the horizontal IO scalability that can be achieved by simply adding more nodes to the cluster, the snapshot backup feature and a REST Service Gateway which provides Amazon S3 and OpenStack Swift compatible interfaces (see Fig. 4). CiRANO platform aims to alleviate the overhead associated with development, regarding common enterprise needs and activities by providing a toolbox of ready-to-use services. More specifically, Messaging Servers are responsible for intra-application and external message exchanging, through the use of Email Servers or SMS Gateways. The provided communication features can be used to send simple text messages or even for planning sophisticated real-time marketing campaigns. Notification Servers, employing Websockets technology, open a bidirectional channel offering real time communication capabilities, between an Application and the connected users. In order to provide web conferencing support, the aforementioned Notification servers are also used as WebRTC Signaling Servers. The WebRTC APIs are designed to allow applications to create connections with Audio, Video, and/or Data channels directly between users via their browsers. Sometimes, due to network restrictions e.g. firewalls, this direct peer-to-peer connection is not possible and a Turn Server is needed to forward traffic from one peer to another. Last but not least, a CIRANO developer can use Batch Servers to schedule the execution of batch jobs at a specific time or with a specified interval. After application deployment, a developer will certainly find useful the following servers. An Update Server monitors the latest stable version of the platform and updates the system. Billing and Auditing Servers on the other hand, monitor user actions on the application level and are used for internal charging of application’s customers and real time application monitoring respectively.

)



7

In the end, a developer can use CIRANO’s Application Repositories to host complete Applications or just parts of them that can be reused from developer communities and integrate to their applications. The module that enables application development is the Application Builder Module, and is used by development teams to create or enhance existing applications. Finally, Web Servers and Servlet Containers are used to expose the platform’s API and to serve the Web Applications to users. 3.3. User roles and privileges A range of user permissions and roles is offered by CIRANO to provide Role Based Authorization and Access Control not only to developers, but to all application users. The platform supports the following roles: Developer, System Administrator, Data-source Administrator, Content Manager and Guest. In the following use case diagram, we show the various roles and interactions with CIRANO: A Developer is able to create a new application or modify and extend an existing one. Using platform’s tools, one can connect to multiple repositories, download feature implementations of publicly available applications and integrate them or even publish its own Application to CIRANO Repository and share it with developer communities. Due to the multi-layered nature of CIRANO applications, a special development approach is followed to ensure application’s architectural integrity. According to that process, a developer is eligible to modify only one of the application layers at a time (platform, system, package, group, user), thus a set of developer-layer specializations occur. A platform developer can add run-time enhancements and enrich PlatonScript’s existing instruction set by adding Java plugins through plugin manager. The core application creator is the one developing at the system layer. He has the responsibility of implementing the basic application’s features and keep data consistent on persistent storage layer. Moving up one layer, package developers can create new packages, extending the system layer, providing new features or altering existing ones. Group developers implement functionalities that affect only a group of clients with common needs, e.g. enterprises from the same industrial sector. Given a horizontal market application, group layers can be effectively used to create multiple vertical market applications extending the provided features and supporting specific business processes. Similarly, user developers develop on user layer, also known as customization layer. Changes on this layer are client specific and usually target users with specific skill sets or responsibilities within an organization. When the application owner registers a new developer inside his application, he must first assign the user to a certain layer, giving him change access only to programming units of this layer. The units created in each layer can inherit models and code from underlying layers, creating a collaborative extensible network among development teams. Changed performed by lower layer developers are automatically passed to upper layers. Changes performed to lower layer components by upper layer developers are saved in their own layer, leaving the lower layers intact and preventing code conflicts among layers. Moreover, when a developer is editing a programming unit the data and code models are locked. Other developers assigned to this layer can open the locked units but they cannot edit them until the lock status is removed by the lock-owner or the application owner. The following roles are not involved in the development process, but can perform privileged actions or special access policies are applied for them. System administrators have access to the application’s User Management system and are responsible for the creation of user accounts and user groups. Furthermore, they manage access and change rights on application resources, set up access controls and security policies, grant and revoke roles. The

8

G. Fylaktopoulos et al. / Future Generation Computer Systems (

)



Fig. 3. Overall CIRANO architecture.

Content Managers are responsible for updating the application’s content. That could be images, wikis or even websites. Datasource administrators configure and manage the application’s connections with different data sources, such as databases, file systems and web services endpoints. Finally, a Guest user has limited access and change rights. A guest is allowed to sign in to the application, but can only access data that are considered publicly available for all users of the application.

servers and their services depend on various technologies, such as projects under the Apache umbrella, JavaMail, JDBC, Servlets, JAX-RS and multiple APIs for integration with third party systems like Exchange Web Services Java API, Dropbox Java SDK and Ceph’s librados. On the user-interface the developer can use any frontend web technology suits the application’s needs. Besides that, CIRANO also offers a set of core components and layouts that are designed using HTML, CSS and many JavaScript libraries like jQuery, jQuery Mobile, jQueryUI, Underscore.js and Ace.js (see Table 2).

3.4. Implementation details CIRANO platform utilizes multiple technologies and systems to offer a wide range of features, necessary to any modern business application. At minimum, just a bundle of a Web, an Application and a Database server is required to start developing CIRANO applications. The use of Java technologies enable the deployment of the platform to many operating systems such as Windows, Mac and Linux OS, as long as JRE is installed on the supported OS to host the JVM. A list of supported Web Servers includes, but is not limited to Apache Tomcat, jBoss, Glassfish and WebLogic. CIRANO servers (Fig. 1) are based on open source technologies and libraries, in order to provide multiple services leveraged by the platform. Those

4. The system in practice In this section we describe the utilization of the platform in real world environments. In Section 4.1 we describe the CIRANO services and UIs and in Section 4.2 the development or porting of applications. 4.1. CIRANO toolboxes and services CIRANO platform offers the whole spectrum of cloud development services, as depicted in Table 3.

G. Fylaktopoulos et al. / Future Generation Computer Systems (

)



9

Fig. 4. Use case diagram of CIRANO roles. Table 2 Tools and technologies used to build the CIRANO platform. Tools and technologies used to build the CiRANO platform

Programming languages

JAVA jdk 1.7 HTML5 CSS3 JavaScript

Webservers

Tomcat 7 Apache 2.4

Libraries

jQuery 2.x Apache commons Java Mail 1.4.5 Sqljdbc 4.1 Httpclient 4.3.2 mysql-connector-java 5.1.25

Database servers

MySQL 5.x Percona 5.x

IDE

Netbeans 8.02 Intellij IDEA—JetBrains 15

STUN/TURN servers

rfc5766-turn-server

Version control

Git Subversion

Monitoring

Zabbix 3.0 LTS

All tools are accessible from the Developer’s menu. The first option (Administration) will open the global application tools (see Fig. 5). The following options open the corresponding unit-specific tools, when a unit is open and selected. 4.2. Use cases evaluation In this subsection, we focus on the process of building a small app for managing automobile repair shops (jSinergio), a typical example of rapid application development/deployment and we describe how an existing complex JAVA application for home care monitoring is adapted and moved to the layered architecture of CIRANO. 4.2.1. Building an app from scratch jSinergio is a simple application that keeps track of a vehicle’s visits to the repair shop (date, time, duration, description of the repairs, cost etc.) as well as some customer and vehicle info. The following steps were followed by a developer in order to deploy jSinergio (see Fig. 6)

The registration process requires an email, a password and the application name. Once a developer is logged in, he can use the Database Designer to design the database schema. Based on the requirement analysis, a minimal database schema with 3 tables (Accounts, Vehicles, and Visits) is required. CIRANO provides a default database schema, common to a wide variety of applications. Therefore, the developer can utilize the existing tables (JP_ACCOUNTS, JP_CONTACTS, JP_TASKS) and the predefined connections between them, just by adding a few extra fields (JP_CONTACTS.LICENCE PLATE NO, JP_CONTACTS.NEXT_INSPECTION_DATE etc.). The next step is to decide the application’s structure breaking it down to CIRANO units and defining them using the Menu Editor. The simplest approach is to create 3 units, one for every database table. Each unit is built separately, using the unit-specific tools, described in Table 3. The unit is opened from the main menu. The first step is to design the data model. The minimum setup requires a DataSet to list the data results of a DB query, a Record to manipulate a db table’s entry and a DataForm (Fig. 7(a)). The second step is to design the interface. The developer can drag n’ drop view components to the interface designer and link them with

10

G. Fylaktopoulos et al. / Future Generation Computer Systems (

)



Table 3 CIRANO toolbox and services. Service/Function

Description

Application-wide User Management Database Designer Auditing Tool Menu Editor Portal Designer Batch Services Manager Resources Manager Messenger Device Agent Integration with CIRANO jAgora Repository Repo Publisher

The administrator can create users and roles, assign roles to users and grant specific access permissions. Developers can use the graphical interface to create their database (CREATE, ALTER, MODIFY, DELETE) and design their data tables by adding platform specific table field attributes. Using the auditing tool developers have full access to their application’s log file. They are able to distinguish between database errors or application errors and identify possible risks or user actions that can be critical for the application The Menu Editor toolbox offers the developer the necessary tools to design, code, drag ‘n drop menu components (units), test, edit and build his application’s menu The developer can either choose a predefined theme and customize it, or create his own page, using text content editing tools (WYSISWYG editor). Provides a management tool to schedule repeated background tasks. Upload and manage global resources such as JavaScript, css, images, audio etc. A complete communication system is available to the users to communicate with each other during the development process. The platform offers integration with various 3-party devices (hardware peripherals, smartphones, tablets, pebble watches and other hardware devices). The developer can log in the CIRANO jAgora repository and download model templates or complete applications and embed them or integrate them in his own application. The developer can utilize the Repo Publisher tool in order to publish his application into the CIRANO jAgora marketplace from where it is available for distribution.

Unit-specific Data Model Designer

User Interface Designer Code Editor Report Designer Localization Manager

The Data Model Designer provides a friendly development environment for designing and creating new datasets, queries, lists, variants and data records. The developer can also precompile his design for debugging purposes, while an ‘‘auditing’’ process is available upon saving the designed XML for quality inspection purposes. The User Interface Designer comes with a handful of design tools, such as forms, tables, panels, HTML areas, bars and more. Components can be added with drag ‘n drop and the developer can actually visualize the UI. The Code Editor tool, lets designers write the event driven procedures in Platonscript. They can also add JavaScript or CSS files required by the client side application part. The Report Designer is a scripting tool optimized for report generation of data acquired via the Data Model. Provides an interface to manage text translations and utilize the platform’s multilingual capabilities.

and downloading the application along with the platform to deploy it elsewhere (private cloud, on premises), using the aforementioned (Section 4.1) platform tools. The first development cycle, took no more than 3 days of work from a non-expert developer, vaguely familiar with the tools of the platform. An experienced CIRANO developer can create and deploy almost one simple unit (such as vehicles management) per hour.

Fig. 5. Administration panel.

the appropriate data objects. A Panel, a Table and a Bar (table view filters and actions) are linked with the DataSet and a Form with a Record Bar (record actions) are linked with the Record (Fig. 7(b)). Using the code editor (3rd step), procedures can be attached to user/data triggered events. In this scenario, the application must validate that the user has provided valid values for certain input fields before creating a new database entry, such as the license plate of a vehicle (Fig. 7(c)). At this point, the unit’s functionality is complete and it can be tested and debugged, until it is finally published (changes are visible to users) by the developer. As soon as all units are published, the application is deployed and ready to use. Possible further steps may include adding and inviting more users/testers/developers, creating a custom portal

4.2.2. Porting an existing app The specific use case refers to an innovative cloud service intended to homecare monitoring for extending independent living of seniors and bolster health of chronic patients. The users of the service enjoy 24/7 monitoring and helpdesk support via mHealth devices and web communication technologies. More specifically, users are provided with a simple interface installed on a mobile device (tablet) which offers assistance in everyday living while it gathers data from connected mHealth (mobile Health) devices (oximeter, blood pressure monitor, smartwatch etc.) and shares that information with the appropriate users (appointed doctors, friends, helpdesk), who are responsible to assess it and provide feedback. The app was initially written in Java/JavaScript/HTML5 and CSS3 and was moved to the CIRANO ecosystem during the early days of its development. Part of the class diagram of the initial implementation in JAVA is depicted in Fig. 8. The differences between the two development architectures (Java-OOP and CIRANO-Procedural/Event Driven/Cascading Layer—see Figs. 9, 10) leave little room for migration automations. The developer can import a java source file, which generates definitions for a few CIRANO entities such as Units (from Java classes) and their respective Procedures (from Java methods). Apart from that, most of the application logic has to be rewritten. However, rewriting in this case does not mean converting every single line of java code into PlatonScript. The coding of the Model and the Presentation components of an MVC application is significantly simplified and performed via GUI tools. There are many tools

G. Fylaktopoulos et al. / Future Generation Computer Systems (

)



11

Fig. 6. jSinergio deployment.

Fig. 7. a: Data diagram – b: Interface Designer – c: Code editor & compiler.

such as a web services manager (REST/SOAP) or a webRTC signaling server, ready-to-use with minimal configuration. Furthermore, all JavaScript, CSS and HTMLresources can be imported into the CIRANO project and are integrated immediately. Thus, coding is reduced to just pure Controller Logic. Although this was not an effortless procedure, it was quickly compensated by the boost in team productivity. The multilayered architecture facilitates customizing the application for different types of end users while the non-binary source code means zero downtime to upload a patch, even without the need of sophisticated installation technologies. On top of these, development expanded and included non-java developers and even IT professionals experienced in mHealth applications. The new team members were able to jump into the project and produce results in just less than two weeks (on average). They mostly work across different application layers and units without affecting the core system functions or each other’s work, even when coding simultaneously. The collaboration aspect of the proposed platform is illustrated in the example of Fig. 11, which is related to the mHealth application. More specifically, the workload split among different development teams is depicted, as well as their collaboration in terms of code and data re-usage. As development team 1 was completing basic features and services in system layer, teams 2 and 3 started developing package specific features, inheriting common functionalities from the system layer. As soon as a package feature was committed, teams 4 and 5 started creating the UIs, inheriting the data and code models from underlying layers. At the same time, development teams 6, 7 and 8 were already working on native mobile apps, using services developed by teams 1 and 3. 5. Discussion and conclusions In this paper we presented CIRANO, a novel cloud platform which resides between cloud programming environments and

aPaaS platforms. It offers a solution for both rapid business development based on predefined components and complex application development, providing a layered distributed architecture. This architecture enables collaboration between multiple developers from different development teams and with different access levels in a cloud programming environment. The system layer represents the core of an application, while the package layers can extend the basic functionality, the group layers customize the application based on common industry features and the user layer can be used for per client customization. In all this process, each underlying layer remains intact. Thus, it covers classic development problems which are created by user requirements for specific solutions and the architecture is agile and extendible even in the cloud. The MVC module provides a clear separation of data, code and presentation modeling. Each of these models is created using a graphic interface and visual programming tools with a set of components that fulfills basic requirements and can be extended in the future. The results of the initial evaluation of their usage have been very promising, since inexperienced developers were able to create business applications from scratch directly in the cloud and in a significantly smaller timeframe. The deployment of these applications were instant, since the platform is also the runtime environment and the installation of updates was an easy process with zero downtime, since there were no binary files. In terms of monitoring, CIRANO offers a live user auditing tool, through which developers were able to track user actions and possible errors during the testing and debugging phase. Another overhead often met in software development is the creation of a reporting mechanism, which will be able to cover changing customer requirements. The platform’s reporting tools not only assist developers with report creation, but also with graphical representation of data in a variety of charts. Even in a more sophisticated application, developers were able to embed web client JavaScript frameworks and communicate with CIRANO’s

12

G. Fylaktopoulos et al. / Future Generation Computer Systems (

)



Fig. 8. Java class diagram.

Fig. 9. CIRANO Cascading layer architecture.

application server and its data and code models using XML and JSON. In terms of integration, the web services manager is a dynamic engine, which can be used to consume services offered by third party software, or provide and expose SOAP XML or REST services to them, using the same data and code models. Moreover, as pre-

sented in the physical architecture, the database connector agent can be used to create hybrid systems, where data reside in a cloud or on premises and the platform itself in another cloud. Security, as a crucial aspect of cloud development, is addressed with restricted access based on layers for developers and with separate access levels for each application user. The application server also offers the

G. Fylaktopoulos et al. / Future Generation Computer Systems (

)



13

Fig. 10. Event driven procedure in CIRANO.

Fig. 11. Layered architecture during development.

ability to encrypt specific database fields, which can be accessible depending on the users’ roles. These levels of encryption could be extended in the future to cover all ways of communication with clients and data sources. As far as mobility is concerned, CIRANO is able to communicate with existing mobile frameworks using the web services manager, in order to create programming units, used as the backend of a mobile solution. This can be the base of a mobile version of the platform’s IDE, which will be able to transform web models in mobile models and represent them in any device.

At the moment, the models can be stored in CIRANO’s repository, jAgora, which can be further developed to cover the requirements for the platform’s marketplace. It also offers connectivity with more sophisticated and widely accepted version control systems like git, leading to a more effective and collaborative development. Version control can also be used in the document management module, required by business applications because documents are fundamental source of information for a company. Thus, integration with third party software like Dropbox

14

G. Fylaktopoulos et al. / Future Generation Computer Systems (

(www.dropbox.com), Google Drive () or Box (www.box.com) should be considered in future updates. As an aPaaS platform, CIRANO also faces some disadvantages in terms of development. The fact that developers must change their favorite programming language, their desktop set of tools and even their development methodology, should not be ignored. On the other hand, the benefits in productivity, sustainability and robust architecture, combined with the easiness of deployment, could offer a balance and attract a development audience, making the adaption smoother. It could be also argued that modeling does not cover all phases of development, missing a documentation creation mechanism or integration with other cloud documentation services. Hardware resource allocation per application is also another important feature, which should further be examined, using containers which will wrap the platform and an application in a way that could also be downloaded and installed in a desktop environment or in another cloud.

)



George Fylaktopoulos holds a B.Sc. in Information Technology from the Aristotle University of Thessaloniki (2004) and an M.Sc. in Software Engineering from the University of Edinburgh (2005). Since 2005, Mr. Fylaktopoulos is a member of B-Open, a company which develops and promotes open, distributed applications. He played a crucial role in the development and evolution of jPlaton development platform and he managed to design, implement and deliver complicated projects like production, project and asset management, task scheduling, document management and email client. In 2008 Mr. Fylaktopoulos focused on cloud development technologies and guided the company’s migration to the cloud. Since 2012 he has undertaken significant projects, such as Comidor, a collaboration platform for businesses, TILED, a unified payment system for the Greek Ministry of Finance, TEAPASA, a loan management system and Bioassist, a cloud solution offering independent living and health monitoring to elderly people. The last two years he has been managing CIRANO’s project, a cloud IDE for distributed model driven application development, about which he has published 2 papers. George Fylaktopoulos tries nowadays as a CTO to combine his development knowledge after 10 years of working experience with his leadership skills in order to control and motivate a growing team of developers, supporters and social.

Acknowledgments The work reported here has been carried out in the framework of national project Cloud IDE for JPlaton Open Multi-layered Applications (CiRANO), led and owned by B-Open S.A., conducted in the context of the Programme for the Development of Industrial Research and Technology (PAVET) 2013–2015 (code 364-BET2013) funded by B-Open S.A. and the Greek General Secretariat for Research and Technology (GSRT) and co-funded by the European Commission. References [1] Barroso, Luiz André, Jimmy Clidaras, Urs Hölzle, The datacenter as a computer: An introduction to the design of warehouse-scale machines, Synth. Lect. Comput. Archit. 8 (3) (2013) 1–154. [2] Armbrust, Michael, et al., A view of cloud computing, Commun. ACM 53 (4) (2010) 50–58. [3] Keith Jeferry, George Kousiouris, Dimosthenis Kyriazis, Jörn Altmann, Augusto Ciuffoletti, Ilias Maglogiannis, Paolo Nesi, Bojan Suzic, Zhiming Zhao, Challenges emerging from future cloud application scenarios, Procedia Comput. Sci. (ISSN: 1877-0509) 68 (2015) 227–237. [4] Giovanni Merlino, Stamatis Arkoulis, Salvatore Distefano, Chrysa Papagianni, Antonio Puliafito, Symeon Papavassiliou, Mobile crowdsensing as a service: A platform for applications on top of sensing Clouds, Future Gener. Comput. Syst. (ISSN: 0167-739X) 56 (2016) 623–639. [5] Kats, C.L. Lennart, et al., Software development environments on the web: a research agenda, in: Proceedings of the ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, ACM, 2012. [6] Robert France, Bernhard Rumpe, Model-driven development of complex software: A research roadmap, Future of Software Engineering, 2007. [7] George Fylaktopoulos, Georgios Goumas, Michael Skolarikis, Aristeidis Sotiropoulos, Dimitrios Athanasiadis, Ilias Maglogiannis, CIRANO: An integrated programming environment for multi-tier cloud based applications, Procedia Comput. Sci. (ISSN: 1877-0509) 68 (2015) 42–52. [8] Cloud9 https://c9.io (accessed 31.03.16). [9] Codenvy https://codenvy.com (accessed 31.03.16). [10] Codeanywhere https://www.codeanywhere.net (accessed 31.03.16). [11] Akshell IDE https://github.com/akshell/kappa (accessed 01.09.16). [12] Jam Jenkins, et al., JavaWIDE: innovation in an online IDE, J. Comput. Sci. Coll. 25 (4) (2010) 1–5. [13] David Mitchell Smith, Daryl C. Plummer, David W. Cearley, The what, why and when of cloud computing, Gartner, 4 June 2009. [14] M.T. Sandikkaya, Practical runtime mechanisms for an aPaaS cloud, in: Globecom Workshops, 8–12 December 2014. [15] Yefim V. Natis, Massimo Pezzini, Kimihiko Iijima, Anne Thomas, Rob Dunie, Magic quadrant for enterprise application platform as a service, Worldwide, Gartner, 24 March 2015. [16] pfSense Project. URL: http://www.pfsense.com/ (accessed 01.09.16). [17] HAProxy Project. URL: http://www.haproxy.org/ (accessed 01.09.16). [18] Ceph Project. URL: http://ceph.com/ (accessed 01.09.16). [19] S. Weil, S.A. Brandt, E.L. Miller, D.D.E. Long, C. Maltzahn, Ceph: A scalable, highperformance distributed file system, in: Proceedings of the 7th Conference on Operating Systems Design and Implementation, OSDI’06, November 2006.

Michael Skolarikis received a Diploma in Electrical & Computer Engineering from the Aristotle University of Thessaloniki in 2011. He is now a Software Engineer in B-Open S.A, an Information Technology company. His interests lie in the fields of Cloud Computing Architecture, Computer Vision and Robotics. From 2009 to 2011, as a member of PANDORA Robotics Team (http://pandora.ee.auth.gr/), he took part in the development of an Autonomous Robotic Vehicle, leading the Computer Vision Team and participating twice in the international robotic competition, RoboCup. Since then, he has worked in several projects in private and public sector, designing and building cloud systems, applications and services, such as Comidor, a collaboration platform for businesses, TILED, a unified payment system for the Greek Ministry of Finance, and Bioassist, an innovative cloud service intended to homecare monitoring for extending independent living of elderly people. The last two years, he is working on CIRANO project, a cloud IDE for distributed application development.

Ioannis Papadopoulos received a Diploma in Electrical & Computer Engineering from the Aristotle University of Thessaloniki (AUTh) Greece in 2011. He is currently a Software Engineer in B-Open S.A. (www.b-open.com), developing innovative cloud applications such as CIRANO (aPaaS—cloud Integrated Development Environment), Comidor (SaaS—suite for enterprise collaboration, crm and project management) and PantaMazi (SaaS/mHealth— homecare monitoring for extending independent living of seniors and bolster health of chronic patients). He is passionate with front-end engineering and cutting edge web technologies (javascript/html5, reactive frameworks, RTC) driven by the desire to create exceptional user experience towards the ultimate goal of making technology familiar and accessible to everyone—anywhere.

Georgios Goumas is an Assistant Professor at the School of ECE of the National Technical University of Athens. He graduated from the Dept. of Electrical and Computer Engineering of the National Technical University of Athens (NTUA) (1999). He received a Ph.D. Degree from the School of Electrical and Computer Engineering of NTUA in January 2004. He is currently a senior researcher at the Computing Systems Laboratory (CSLab) in the School of Electrical and Computer Engineering of NTUA. His research interests include high-performance computing and architectures, system co-design, cloud computing, resource allocation policies, resource-demanding applications, sparse algebra, automatic parallelizing compilers, parallel programming models, etc. He has published more than 40 research papers in journals, international conferences and peer-reviewed workshop. Georgios Goumas is a recipient of the IEEE IPDPS 2001 best paper award for the paper ‘‘Minimizing Completion Time for Loop Tiling with Computation and Communication Overlapping’’ (held at San Francisco, California) and of the Dimitrios N. Chorafas Foundation award (2003) in recognition to his research work in the field of ‘‘Parallel and Distributed Computing on Large Scale Systems’’. He has worked in several European and National R&D programs in the field of High Performance Computing, Cloud Computing, Networking and Storage for IT systems (HellasHPC, SMART-PIV, PRACE, PRESEMT, DOLFIN). He is a member of the IEEE, HiPEAC and of the Technical Chamber of Greece.

G. Fylaktopoulos et al. / Future Generation Computer Systems ( Aristeidis Sotiropoulos received his B.Sc. in Computer Science in 1998 from the University of Crete, Greece and his Ph.D. in Parallel Processing and Cluster Computing in 2004 from the National Technical University of Athens, Greece. His interests mainly focus on the fields of Large Scale Computing & Storage Systems, System Software for Scalable High Speed Interconnects for Computer Clusters and Advanced Microprocessor Architectures. He has published several scientific papers in international journals and conference proceedings. He has received the IEEE IPDPS 2001 best paper award for the paper ‘‘Minimizing Completion Time for Loop Tiling with Computation and Communication Overlapping’’. He has worked in several European and National R&D programs in the field of High Performance Computing, Grid Computing, Cloud Computing and Storage. He is a PMI certified Project Management Professional since 2013. Currently, he is managing national and EC projects at GRNET SA, the Greek NREN responsible for the provision of advanced e-infrastructure services to the Greek Academic and Research Community.

)



15

Ilias Maglogiannis received a Diploma in Electrical & Computer Engineering and a Ph.D. in Biomedical Engineering and Medical Informatics from the National Technical University of Athens (NTUA) Greece in 1996 and 2000 respectively. He is now an Associate Professor in the Dept. of Digital Systems in the University of Piraeus (http://www.ds.unipi.gr/en/iliasmaglo/). He has been principal investigator in many European (i.e. H2020: UNCAP, AGILE, FP7: e-LICO, INHOME, FP6: UNITE, NOMAD, TELEMED, FP5: MOMEDA, INTRACLINIC) and National Research programs in Biomedical Engineering and Informatics, while he has also served as external evaluator in R&D projects for the EU, the Government of Hong Kong, the Republic of Portugal, Czech, Cyprus and Greece. His scientific interests include Biomedical Informatics, Computer Vision and Pervasive Healthcare Systems. His published scientific work includes five (5) books, 87 journal papers and more than 170 international conference papers, while has received more than 3000 citations on his published work. He is a senior member of the IEEE, ACM, SPIE, and Vice President member of the Hellenic Association of Biomedical Engineering.