US20060015849A1 - Application splitting for network edge computing - Google Patents

Application splitting for network edge computing Download PDF

Info

Publication number
US20060015849A1
US20060015849A1 US10/889,777 US88977704A US2006015849A1 US 20060015849 A1 US20060015849 A1 US 20060015849A1 US 88977704 A US88977704 A US 88977704A US 2006015849 A1 US2006015849 A1 US 2006015849A1
Authority
US
United States
Prior art keywords
application
split type
split
identifying
splitting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US10/889,777
Other versions
US7634755B2 (en
Inventor
Alexandre Polozoff
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US10/889,777 priority Critical patent/US7634755B2/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: POLOZOFF, ALEXANDRE
Priority to PCT/EP2005/052632 priority patent/WO2006005655A1/en
Priority to CNB2005800234709A priority patent/CN100547545C/en
Priority to EP05749107A priority patent/EP1782185A1/en
Priority to JP2007520794A priority patent/JP5046161B2/en
Priority to TW094122580A priority patent/TWI354900B/en
Publication of US20060015849A1 publication Critical patent/US20060015849A1/en
Publication of US7634755B2 publication Critical patent/US7634755B2/en
Application granted granted Critical
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION, SERVICENOW, INC. reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION CONVEYOR IS ASSIGNING UNDIVIDED 50% INTEREST Assignors: INTERNATIONAL BUSINESS MACHINES CORPORATION
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Definitions

  • the field of the invention is data processing, or, more specifically, methods, systems, and products for application splitting for network edge computing.
  • the Internet and the World Wide Web operate primarily in a client-server model for data communications.
  • the content being transferred is increasingly complex, and clients are increasingly diverse. It is becoming more and more difficult to efficiently deliver complex, varied content to increasingly diverse client devices.
  • the increased demand results in more and more new devices, new servers, new clients to handle each new type of data.
  • the client requests information from the server, and the server sends information back in the format requested by the client.
  • This content delivery system was once considered ideal since one need only concentrate on processing at the “ends.” However, reality has demanded more, and in response new services have emerged. Caches near the client and on edge-delivery points make operations faster and lighten the network load. Gateways (such as those for wireless devices) help diverse groups of clients connect. Content Delivery Networks (CDNs) better organize the vast array of Internet content for the client. All these services have grown independently of one another, however, making extensions and new services vendor-specific and hard to manage.
  • PDAs personal data assistants
  • PCs personal computers
  • Cell phones laptop computers
  • e-book readers e-book readers
  • the network edge architecture provides a means to address the complexities that have grown for “in the network” services.
  • the term “network edge” is usually used to describe a physical or network boundary of an entity in the Internet.
  • network edges could be the set of access points of an Internet Service Provider (“ISP”) or the intranet of an enterprise network.
  • ISP Internet Service Provider
  • Network edge can also mean a distinguished point of content delivery, such as the boundary of a country, a point at which it is useful to translate data into an appropriate language or format.
  • the network edge is the point where content processing can occur in the path of content delivery.
  • the network edge architecture is a collection of technologies for performing part of the content delivery processes for transferring data between clients and servers. Its architecture is a unified approach to developing software and hardware for performing content delivery functions. Network edge architecture allows for operations such as data transcoding. Content providers can offer data in a single, standard format regardless of the type of client device, and network edge architecture makes it easier to provide a format for the presentation suited to the device. For example, a content provider may store content in a single format, regardless of the type of client device that may request the content, and the network edge technology may reformat the content for the receiving device. A rule-based service running on an edge server or an edge network makes the appropriate data transformations based on standardized protocols for various devices.
  • customer information and client device interfaces must be managed on the client device or on the content server. That is, the customer is required to re-enter data, and the server is required to cope with client diversity issues, whether the client device is a cell phone, a PDA, a laptop, a personal computer, and so on.
  • a client's request is amended, that is, personalized, in accordance with known information retained in the server with additional needed data being entered from the client.
  • the client may be using a cell phone to access the World Wide Web or an email service. This requires that the server send back only content appropriate to that cell phone interface and progress through voice menus or keyboard menus to obtain customer specifics.
  • an edge server amends the client's request to specify the appropriate cell phone interface. Then the edge server communicates with content servers to fill in customer data, thereby simplifying customer interaction. Then the edge server amends the request to the content servers to obtain data that is then reformulated by the edge serve to fit the client's device. The appropriate content is then downloaded to the client device in a manner suitable for the client device.
  • the network edge server resides between the client and the content servers and serves as an agent for both the customer and the content provider.
  • a network edge server amends the request, typically based on a set of predefined rules, according to the customer's information.
  • the edge server then sends the amended request on to the content server, possibly with some exchange to the content server as indicated previously.
  • the content server is relieved of the burden of amending the request or reformulating the content. Any transformation of content that is needed will happen at the network edge server using standard protocols. In this way, network edge architecture simplifies the information required from the content provider to address different formats needed for different devices.
  • Network edge architecture represents a growing shift from the traditional client-server model to a more efficient client-edge-server model.
  • content providers can offer personalized, scalable services.
  • the edge plays a role that is currently forced on both client and server.
  • Application software that was installed entirely on a content server or an application server in the traditional client-server architecture now may be deployed to the an edge network.
  • application software that was installed entirely on a content server or an application server in the traditional client-server architecture now may be split, and in many cases, must be split, between the content server and the edge. It would be useful to have automated tools to identify how an application should be prepared for deployment to the edge and how to split the application if necessary.
  • Embodiments include identifying an application split point; identifying a split type for the application split point; splitting the application into subcomponents in accordance with the split type; and moving a subcomponent to an edge network. Many embodiments include determining that the application considered with the data it administers is too large to fit on the edge network.
  • splitting the application includes splitting the application in dependence upon a user preferences.
  • identifying an application split point includes identifying a class of the application that calls an EJB.
  • identifying an application split point includes identifying a class of the application that updates an enterprise database.
  • identifying an application split point includes identifying a class of the application that calls a JCA function.
  • identifying a split type for the application split point includes identifying a silo split type for the application split point. In typical embodiments, identifying a split type for the application split point includes identifying an EJB split type for the application split point. In many embodiments, identifying a split type for the application split point includes identifying a façade split type for the application split point.
  • the application split point includes a class in a calling hierarchy that calls an EJB; and the split type includes an EJB split type.
  • splitting the application into subcomponents in accordance with the split type includes splitting the classes in the calling hierarchy into a client RMI module and a server RMI module; and moving a subcomponent to an edge network includes moving the client RMI module to the edge network.
  • the application split point includes a class in a calling hierarchy that calls an EJB and the split type includes an EJB split type.
  • splitting the application into subcomponents in accordance with the split type includes splitting the classes in the calling hierarchy into a client web services module and a server web services module; and moving a subcomponent to an edge network includes moving the client web services module to the edge network.
  • the application split point includes a class in a calling hierarchy that updates an enterprise database and the split type includes a silo split type.
  • splitting the application into subcomponents in accordance with the split type includes aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and moving a subcomponent to an edge network includes moving the silo module to the edge network.
  • the application split point includes a class in a calling hierarchy that calls an EJB and calls an HTTP function and the split type includes a silo split type.
  • splitting the application into subcomponents in accordance with the split type includes aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and moving a subcomponent to an edge network includes moving the silo module to the edge network.
  • the application split point includes a class in a calling hierarchy that calls a JCA function and calls an HTTP function and the split type includes a silo split type.
  • splitting the application into subcomponents in accordance with the split type includes aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and moving a subcomponent to an edge network includes moving the silo module to the edge network.
  • the application split point includes a class in a calling hierarchy that is listed more than once as a potential split point and the split type includes a façade split type.
  • splitting the application into subcomponents in accordance with the split type includes splitting the classes in the calling hierarchy into a client web services module and a server web services module; and moving a subcomponent to an edge network includes moving the client web services module to the edge network.
  • FIG. 1 sets forth a system diagram of an exemplary system for application splitting for network edge computing according to embodiments of the present invention.
  • FIG. 2 sets forth a block diagram illustrating an exemplary software development system.
  • FIG. 3 sets forth a flow chart illustrating an exemplary method for application splitting for network edge computing.
  • FIG. 4 sets forth a flow chart illustrating an exemplary method for identifying an application split point.
  • FIG. 5 sets forth a flow chart illustrating exemplary methods for identifying a split type for an application split point.
  • FIG. 6 sets forth a flow chart illustrating an exemplary method for application splitting for network edge computing for the EJB split type.
  • FIG. 7 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the EJB split type.
  • FIG. 8 sets forth a flow chart illustrating an exemplary method for application splitting for network edge for the silo split type.
  • FIG. 9 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the silo split type.
  • FIG. 10 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the silo split type.
  • FIG. 11 sets forth a flow chart illustrating an exemplary method for application splitting for network edge for the façade split type.
  • Suitable programming means include any means for directing a computer system to execute the steps of the method of the invention, including for example, systems comprised of processing units and arithmetic-logic circuits coupled to computer memory, which systems have the capability of storing in computer memory, which computer memory includes electronic circuits configured to store data and program instructions, programmed steps of the method of the invention for execution by a processing unit.
  • the invention also may be embodied in a computer program product, such as a diskette or other recording medium, for use with any suitable data processing system.
  • Embodiments of a computer program product may be implemented by use of any recording medium for machine-readable information, including magnetic media, optical media, or other suitable media.
  • any computer system having suitable programming means will be capable of executing the steps of the method of the invention as embodied in a program product.
  • Persons skilled in the art will recognize immediately that, although most of the exemplary embodiments described in this specification are oriented to software installed and executing on computer hardware, nevertheless, alternative embodiments implemented as firmware or as hardware are well within the scope of the present invention.
  • FIG. 1 sets forth a system diagram of an exemplary system for application splitting for network edge computing according to embodiments of the present invention.
  • the system of FIG. 1 includes several exemplary client devices ( 126 ) connected through wide area network ( 101 ) to several edge server configured as an edge network ( 106 ).
  • the edge servers are in turn connected through local area network ( 103 ) to several application and content servers represented as enterprise servers ( 124 ).
  • the clients ( 126 ) in the example of FIG. 1 include a personal computer ( 108 ) connected to wide area network ( 101 ) through wireline connection ( 120 ), a wireless, network-enabled personal digital assistant (“PDA”) ( 112 ) connected to wide area network ( 101 ) through wireless connection ( 114 ), and mobile telephone ( 110 ) connected to wide area network ( 101 ) through wireless connection ( 116 ).
  • PDA personal digital assistant
  • the system of FIG. 1 includes an application program ( 130 ) that is under development on development system ( 129 ) for splitting into two modules, an edge module ( 134 ) for installation on the edge network ( 106 ) and an enterprise module ( 132 ) for installation on the enterprise network ( 124 ).
  • Development system ( 129 ) is a computer having a software development environment such as the JavaTM Software Development Kit (“SDK”) and also having analysis modules and a splitter ( 128 ) that operate generally by identifying application split points, identifying split types for the application split points, splitting applications into subcomponents in accordance with the split types, and moving some subcomponents to an edge network.
  • SDK JavaTM Software Development Kit
  • FIG. 2 sets forth a block diagram illustrating an exemplary software development system that operates generally by identifying application split points, identifying split types for the application split points, splitting applications into subcomponents in accordance with the split types, and moving some subcomponents to an edge network.
  • the exemplary system of FIG. 2 includes a JDBCTM analysis module ( 202 ) that operates generally to identify application split points as classes that call Java DataBase Connectivity (“JDBC”) functions to update enterprise databases.
  • JDBC Java DataBase Connectivity
  • Such calls to JDBC functions may be represented, for example, as calls to Java member methods named ‘executeUpdate’ or ‘executeInsert.’
  • the exemplary system of FIG. 2 also includes an EJBTM analysis module ( 204 ) that operates generally to identify application split points as classes that call Enterprise Java Beans (“EJBs”). Classes that call EJBs may be identified, for example, as classes that construct session EJBs using calls to the EJB Properties( ) constructor, the InitialContext( ) constructor, and so on.
  • EJBTM analysis module 204
  • Classes that call EJBs may be identified, for example, as classes that construct session EJBs using calls to the EJB Properties( ) constructor, the InitialContext( ) constructor, and so on.
  • the exemplary system of FIG. 2 also includes a JCATM analysis module ( 206 ) that operates generally to identify application split points as classes that call Java Connector Architecture (“JCAs”) functions.
  • JCAs Java Connector Architecture
  • Classes that call JCAs functions may be identified, for example, as classes using calls to the JCA ConnectionFactory( ), the createInteraction( ) method, the Interaction.execute( ) method, and so on.
  • the analytic modules ( 202 , 204 , and 206 ) identify split points as a list of potential split point. For each split point so identified, the split type analysis module ( 208 ) identifies a split type.
  • the split type analysis module operates generally to identify an EJB split type for split points that are classes that call EJB functions.
  • the split type analysis module operates to identify a Silo split type for split points that are classes that update enterprise databases through, for example JDBC calls.
  • the split type analysis module operates to identify a Silo split type for split points that are classes that make HTTP calls.
  • the split type analysis module operates to identify a façade split type for split points that are classes identified more than once by the analytic modules ( 202 , 204 , and 206 ) as potential split points.
  • splitter ( 210 ) may split application ( 130 ) into a client RMITM (“Java Remote Method Invocation”) module and a server RMI module, move the client RMI module to an edge network as an EJB edge module ( 216 ), and move the server RMI module to an enterprise network as an EJB enterprise module ( 218 ).
  • splitter ( 210 ) may split application ( 130 ) into a client web services module and a server web services module, move the client web services module to an edge network as an EJB edge module ( 216 ), and move the server web services module to an enterprise network as an EJB enterprise module ( 218 ).
  • splitter ( 210 ) may split application ( 130 ) into a client web services module and a server web services module, move the client web services module to an edge network as a façade edge module ( 212 ), and move the server web services module to an enterprise network as a façade enterprise module ( 214 ).
  • splitter ( 210 ) may aggregate as one subcomponent all the classes in the calling hierarchy into a silo module ( 220 ).
  • the splitter ( 210 ) may move the silo module ( 220 ) to an edge network or to an enterprise network.
  • FIG. 3 sets forth a flow chart illustrating an exemplary method for application splitting for network edge computing that includes identifying ( 302 ) an application split point ( 310 ).
  • FIG. 4 sets forth a flow chart illustrating an exemplary method for identifying an application split point.
  • identifying an application split point is carried out by identifying ( 402 ) a class of the application that calls an EJB.
  • a class that calls an EJB can be identified by its use of EJB member methods such as calls to the EJB Properties( ) constructor, the InitialContext( ) constructor, and so on.
  • identifying an application split point also can be carried out by identifying ( 404 ) a class of the application that updates an enterprise database through, for example, calls to JDBC methods such as ‘executeUpdate’ or ‘executeInsert.’
  • identifying an application split point can be carried out by identifying ( 405 ) a class of the application that calls a JCA function.
  • Classes that call JCA functions may be identified, for example, as classes using calls to the JCA ConnectionFactory( ), the createInteraction( ) method, the Interaction.execute( ) method, and so on.
  • the method of FIG. 3 also includes identifying ( 304 ) a split type ( 312 ) for the application split point.
  • FIG. 5 sets forth a flow chart illustrating exemplary methods for identifying a split type for an application split point.
  • identifying a split type for the application split point includes identifying a silo split type ( 504 ) for the application split point.
  • identifying a silo split type ( 504 ) for the application split point can be carried out by identifying ( 502 ), from a list of potential split points ( 406 ) and the application ( 130 ), classes in the application that call an HTTP function and recording ( 506 ) the calling hierarchy of the identified class.
  • Examples of HTTP functions include Java member methods in HTTPRequest classes, HTTPResponse classes, and HTTPSession classes.
  • identifying a silo split type can also be carried out by identifying ( 514 ), from a list of potential split points ( 406 ) and the application ( 130 ), a class that updates an enterprise database.
  • a class that updates an enterprise database may be identified, for example, by calls to JDBC member methods such as ‘executeUpdate’ and ‘executeInsert.’
  • identifying a split type for the application split point includes identifying ( 508 ) an EJB split type ( 510 ) for the application split point.
  • EJB split type 510
  • identifying an EJB split type can be carried out by identifying ( 508 ), from a list of potential split points ( 406 ) and from the application ( 130 ) source code, a class that calls an EJB, indicated, for example, by calls to the EJB Properties( ) constructor, the InitialContext( ) constructor, and so on.
  • identifying a split type for the application split point includes identifying a façade split type ( 514 ) for the application split point.
  • identifying a façade split type ( 514 ) for the application split point can be carried out by identifying ( 512 ), from a list of potential split points, a class that is listed more than once as a potential split point.
  • the method of FIG. 5 also includes assigning ( 518 ) all remaining unassigned classes on the list of potential split points to the silo split type ( 504 ). That is, in scanning through the classes listed as potential split points, a split type analysis module such as the one shown at reference ( 208 ) on FIG. 2 , assigns the split type ‘silo’ to each split point that is not already identified as an EJB split type or a façade split type.
  • Some embodiments according to the present invention implement all three kinds of splits: silo splits, façade splits, and EJB splits.
  • a split point that calls HTTP functions or updates an enterprise database and also calls EJBs or is listed more than once as a potential split point may be classified as a silo split type and an EJB split type or a façade split type. That is, one split point may be assigned more than one split type.
  • such embodiments may advantageously permit only one split type per split point, implemented by deleting ( 516 ) from the silo split type ( 504 ) any split point that is also identified as an EJB split type ( 510 ) or a façade split type ( 514 ).
  • the method of FIG. 3 also includes splitting ( 306 ) the application into subcomponents ( 314 ) in accordance with the split type and moving ( 308 ) a subcomponent to an edge network ( 106 ).
  • the method of FIG. 3 includes splitting the application ( 130 ) into a client RMITM (“Java Remote Method Invocation”) module and a server RMI module, and moving the client RMI module to an edge network, and moving the server RMI module to an enterprise network.
  • the method of FIG. 3 includes splitting the application ( 130 ) into a client web services module and a server web services module, moving the client web services module to an edge network, and moving the server web services module to an enterprise network.
  • the method of FIG. 3 includes splitting the application ( 130 ) into a client web services module and a server web services module, moving the client web services module to an edge network, and moving the server web services module to an enterprise network.
  • the method of FIG. 3 includes aggregating as one subcomponent all the classes in the calling hierarchy into a silo module and moving the silo module to an edge network or to an enterprise network.
  • splitting ( 306 ) the application includes splitting the application in dependence upon a user preferences ( 303 ). Examples of such user preferences include:
  • the first exemplary user preference recites “no split—if entire application and its database will fit on the edge network.” In such an example if the entire application and its database will fit on the edge network, the application is not split and the entire application is moved to the edge network.
  • the method of FIG. 3 therefore also includes determining whether the application considered with the data it administers is too large to fit on the edge network. One way of determining whether the application considered with the data it administers is too large to fit on the edge network is carried out by comparing the available data storage capacity of edge network and the data storage requirement for the application and the data in the databases administered by the application.
  • silo/façade/EJB The user preferences listed above (“identify all split types, and split by priority: silo/façade/EJB”) means that if more than one split type is present, the application is split in dependence upon priority of present split types, in this case silo split types are preferred to façade split types and façade split types are preferred to EJB split types. That is, if all split types are present, split by silo only. If only façade and EJB split types are present, split by façade only. If only EJB split types are present, split by EJB.
  • Splitting ( 306 ) the application into subcomponents ( 314 ) in accordance with the split type also advantageously includes a check (not shown) that each class to be included a subcomponent is serializable.
  • Most Java classes are serializable—unless, for example, a member method takes a native data type, such as a character or integer, for example, among its call parameters. Checking that each class in a subcomponent is serializable, therefore, may be carried out by scanning the application source code of references to native data types, reporting the discover of such native data types, and converting them to Java classes and references to Java objects.
  • splitting ( 306 ) the application into subcomponents ( 314 ) in accordance with the split type also may advantageously include glue insertion. That is, a subcomponent to be moved to an edge network may include data to be maintained statefully across multiple request/response exchanges. Such stateful data may be maintained in a Java HTTPSession object, for example. When application functionality is split between the edge network and the enterprise network, the stateful data may usefully be maintained on both the edge server and the enterprise server.
  • splitting ( 306 ) the application into subcomponents ( 314 ) in accordance with the split type also advantageously includes checking for the presence of classes that maintain such stateful data, such as classes containing HTTPSession objects or references to HTTPSession objects, for example, and inserting one or more glue classes and calls to glue classes to assure that the stateful data is made available as needed in both the edge module and its related enterprise modules.
  • FIG. 6 sets forth a flow chart illustrating an exemplary method for application splitting for network edge computing for the EJB split type. That is, in the example of FIG. 6 , the application split point ( 310 ) is identified as a class in a calling hierarchy that calls an EJB and the split type ( 312 ) is identified as an EJB split type.
  • splitting ( 306 ) the application into subcomponents ( 314 ) in accordance with the split type is carried out by splitting the classes in the calling hierarchy into a client RMI module ( 602 ) and a server RMI module ( 604 ).
  • moving ( 308 ) a subcomponent to an edge network is carried out by moving the client RMI module ( 602 ) to the edge network ( 106 ).
  • FIG. 7 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the EJB split type. That is, the application split point ( 310 ) is identified as a class in a calling hierarchy that calls an EJB, and the split type ( 312 ) is identified as an EJB split type.
  • splitting ( 306 ) the application ( 130 ) into subcomponents ( 314 ) in accordance with the split type ( 312 ) is carried out by splitting the classes in the calling hierarchy into a client web services module ( 702 ) and a server web services module ( 704 ).
  • moving ( 308 ) a subcomponent to an edge network ( 106 ) is carried out by moving the client web services ( 702 ) module to the edge network ( 106 ).
  • FIG. 8 sets forth a flow chart illustrating an exemplary method for application splitting for network edge for the silo split type.
  • the application split point ( 310 ) is identified as a class in a calling hierarchy that updates an enterprise database
  • the split type ( 312 ) is identified as a silo split type.
  • splitting ( 306 ) the application ( 130 ) into subcomponents ( 314 ) in accordance with the split type ( 312 ) is carried out by aggregating as one subcomponent all the classes in the calling hierarchy into a silo module ( 802 ).
  • moving ( 308 ) a subcomponent to an edge network ( 106 ) is carried out by moving the silo module ( 802 ) to the edge network ( 106 ).
  • FIG. 9 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the silo split type.
  • the application split point ( 310 ) is identified as a class in a calling hierarchy that calls an EJB and calls an HTTP function and the split type ( 312 ) is identified as a silo split type.
  • splitting ( 306 ) the application ( 130 ) into subcomponents ( 314 ) in accordance with the split type is carried out by aggregating as one subcomponent all the classes in the calling hierarchy into a silo module ( 802 ).
  • moving ( 308 ) a subcomponent to an edge network ( 106 ) is carried out by moving the silo module ( 802 ) to the edge network ( 106 ).
  • FIG. 10 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the silo split type.
  • the application split point ( 310 ) is identified as a class in a calling hierarchy that calls a JCA function and calls an HTTP function
  • the split type ( 312 ) is identified as a silo split type.
  • splitting ( 306 ) the application ( 130 ) into subcomponents ( 314 ) in accordance with the split type ( 312 ) is carried out by aggregating as one subcomponent all the classes in the calling hierarchy into a silo module ( 802 ).
  • moving ( 308 ) a subcomponent to an edge network ( 106 ) is carried out by moving the silo module ( 802 ) to the edge network ( 106 ).
  • FIG. 11 sets forth a flow chart illustrating an exemplary method for application splitting for network edge for the façade split type.
  • the application split point ( 310 ) is identified as a class in a calling hierarchy that is listed more than once as a potential split point
  • the split type ( 312 ) is identified as a façade split type.
  • splitting ( 306 ) the application ( 130 ) into subcomponents ( 314 ) in accordance with the split type ( 312 ) is carried out by splitting the classes in the calling hierarchy into a client web services module ( 702 ) and a server web services module ( 704 ).
  • moving ( 308 ) a subcomponent to an edge network ( 106 ) is carried out by moving the client web services module ( 702 ) to the edge network ( 106 ).

Abstract

Application splitting for network edge computing including identifying an application split point; identifying a split type for the application split point; splitting the application into subcomponents in accordance with the split type; and moving a subcomponent to an edge network. Identifying an application split point may include identifying a class of the application that calls an EJB. Identifying an application split point may include identifying a class of the application that updates an enterprise database. Identifying an application split point may include identifying a class of the application that calls a JCA function. Identifying a split type for the application split point may include identifying a silo split type for the application split point. Identifying a split type for the application split point may include identifying an EJB split type for the application split point.

Description

    BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The field of the invention is data processing, or, more specifically, methods, systems, and products for application splitting for network edge computing.
  • 2. Description of Related Art
  • The Internet and the World Wide Web operate primarily in a client-server model for data communications. The content being transferred is increasingly complex, and clients are increasingly diverse. It is becoming more and more difficult to efficiently deliver complex, varied content to increasingly diverse client devices. The increased demand results in more and more new devices, new servers, new clients to handle each new type of data.
  • In the conceptual client-server model, the client requests information from the server, and the server sends information back in the format requested by the client. This content delivery system was once considered ideal since one need only concentrate on processing at the “ends.” However, reality has demanded more, and in response new services have emerged. Caches near the client and on edge-delivery points make operations faster and lighten the network load. Gateways (such as those for wireless devices) help diverse groups of clients connect. Content Delivery Networks (CDNs) better organize the vast array of Internet content for the client. All these services have grown independently of one another, however, making extensions and new services vendor-specific and hard to manage. With the evolution of diverse client devices, content providers are forced to offer data in every necessary format for every device, personal data assistants (PDAs), personal computers (PCs), cell phones, laptop computers, e-book readers, and others. Servers are forced to handle differences between the formats available and the formats the client can accept.
  • The network edge architecture provides a means to address the complexities that have grown for “in the network” services. The term “network edge” is usually used to describe a physical or network boundary of an entity in the Internet. For example, network edges could be the set of access points of an Internet Service Provider (“ISP”) or the intranet of an enterprise network. “Network edge” can also mean a distinguished point of content delivery, such as the boundary of a country, a point at which it is useful to translate data into an appropriate language or format. The network edge is the point where content processing can occur in the path of content delivery.
  • The network edge architecture is a collection of technologies for performing part of the content delivery processes for transferring data between clients and servers. Its architecture is a unified approach to developing software and hardware for performing content delivery functions. Network edge architecture allows for operations such as data transcoding. Content providers can offer data in a single, standard format regardless of the type of client device, and network edge architecture makes it easier to provide a format for the presentation suited to the device. For example, a content provider may store content in a single format, regardless of the type of client device that may request the content, and the network edge technology may reformat the content for the receiving device. A rule-based service running on an edge server or an edge network makes the appropriate data transformations based on standardized protocols for various devices.
  • Consider an example of a movie delivery. With network edge technology, consumers see the movie in the format appropriate to their devices and their personal tastes. The content provider no longer has to worry about the device on which the movie will be viewed, because the burden of data transformation is removed from content providers and servers. Instead, data transformation is consolidated at the network edge.
  • In the traditional client/server architecture, customer information and client device interfaces must be managed on the client device or on the content server. That is, the customer is required to re-enter data, and the server is required to cope with client diversity issues, whether the client device is a cell phone, a PDA, a laptop, a personal computer, and so on.
  • The transfer and reformulation of content from provider to client happens in several steps. A client's request is amended, that is, personalized, in accordance with known information retained in the server with additional needed data being entered from the client. For example, the client may be using a cell phone to access the World Wide Web or an email service. This requires that the server send back only content appropriate to that cell phone interface and progress through voice menus or keyboard menus to obtain customer specifics. In the network edge architecture, an edge server amends the client's request to specify the appropriate cell phone interface. Then the edge server communicates with content servers to fill in customer data, thereby simplifying customer interaction. Then the edge server amends the request to the content servers to obtain data that is then reformulated by the edge serve to fit the client's device. The appropriate content is then downloaded to the client device in a manner suitable for the client device.
  • The network edge server resides between the client and the content servers and serves as an agent for both the customer and the content provider. When the client sends out a request for content, a network edge server amends the request, typically based on a set of predefined rules, according to the customer's information. The edge server then sends the amended request on to the content server, possibly with some exchange to the content server as indicated previously. The content server is relieved of the burden of amending the request or reformulating the content. Any transformation of content that is needed will happen at the network edge server using standard protocols. In this way, network edge architecture simplifies the information required from the content provider to address different formats needed for different devices.
  • Network edge architecture represents a growing shift from the traditional client-server model to a more efficient client-edge-server model. When content-level services are performed at the network edge, content providers can offer personalized, scalable services. With network edge architecture, the edge plays a role that is currently forced on both client and server. Application software that was installed entirely on a content server or an application server in the traditional client-server architecture now may be deployed to the an edge network. In addition, application software that was installed entirely on a content server or an application server in the traditional client-server architecture now may be split, and in many cases, must be split, between the content server and the edge. It would be useful to have automated tools to identify how an application should be prepared for deployment to the edge and how to split the application if necessary.
  • SUMMARY OF THE INVENTION
  • Methods, systems, and computer program products are provided for application splitting for network edge computing. Embodiments include identifying an application split point; identifying a split type for the application split point; splitting the application into subcomponents in accordance with the split type; and moving a subcomponent to an edge network. Many embodiments include determining that the application considered with the data it administers is too large to fit on the edge network.
  • In typical embodiments, splitting the application includes splitting the application in dependence upon a user preferences. In many embodiments, identifying an application split point includes identifying a class of the application that calls an EJB. In many embodiments, identifying an application split point includes identifying a class of the application that updates an enterprise database. In many embodiments, identifying an application split point includes identifying a class of the application that calls a JCA function.
  • In many embodiments, identifying a split type for the application split point includes identifying a silo split type for the application split point. In typical embodiments, identifying a split type for the application split point includes identifying an EJB split type for the application split point. In many embodiments, identifying a split type for the application split point includes identifying a façade split type for the application split point.
  • In some embodiments, the application split point includes a class in a calling hierarchy that calls an EJB; and the split type includes an EJB split type. In some such embodiments, splitting the application into subcomponents in accordance with the split type includes splitting the classes in the calling hierarchy into a client RMI module and a server RMI module; and moving a subcomponent to an edge network includes moving the client RMI module to the edge network.
  • In some embodiments, the application split point includes a class in a calling hierarchy that calls an EJB and the split type includes an EJB split type. In some such embodiments, splitting the application into subcomponents in accordance with the split type includes splitting the classes in the calling hierarchy into a client web services module and a server web services module; and moving a subcomponent to an edge network includes moving the client web services module to the edge network.
  • In some embodiments, the application split point includes a class in a calling hierarchy that updates an enterprise database and the split type includes a silo split type. In some such embodiments, splitting the application into subcomponents in accordance with the split type includes aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and moving a subcomponent to an edge network includes moving the silo module to the edge network.
  • In some embodiments, the application split point includes a class in a calling hierarchy that calls an EJB and calls an HTTP function and the split type includes a silo split type. In some such embodiments, splitting the application into subcomponents in accordance with the split type includes aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and moving a subcomponent to an edge network includes moving the silo module to the edge network.
  • In some embodiments, the application split point includes a class in a calling hierarchy that calls a JCA function and calls an HTTP function and the split type includes a silo split type. In some such embodiments, splitting the application into subcomponents in accordance with the split type includes aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and moving a subcomponent to an edge network includes moving the silo module to the edge network.
  • In some embodiments, the application split point includes a class in a calling hierarchy that is listed more than once as a potential split point and the split type includes a façade split type. In some such embodiments, splitting the application into subcomponents in accordance with the split type includes splitting the classes in the calling hierarchy into a client web services module and a server web services module; and moving a subcomponent to an edge network includes moving the client web services module to the edge network.
  • The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular descriptions of exemplary embodiments of the invention as illustrated in the accompanying drawings wherein like reference numbers generally represent like parts of exemplary embodiments of the invention.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 sets forth a system diagram of an exemplary system for application splitting for network edge computing according to embodiments of the present invention.
  • FIG. 2 sets forth a block diagram illustrating an exemplary software development system.
  • FIG. 3 sets forth a flow chart illustrating an exemplary method for application splitting for network edge computing.
  • FIG. 4 sets forth a flow chart illustrating an exemplary method for identifying an application split point.
  • FIG. 5 sets forth a flow chart illustrating exemplary methods for identifying a split type for an application split point.
  • FIG. 6 sets forth a flow chart illustrating an exemplary method for application splitting for network edge computing for the EJB split type.
  • FIG. 7 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the EJB split type.
  • FIG. 8 sets forth a flow chart illustrating an exemplary method for application splitting for network edge for the silo split type.
  • FIG. 9 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the silo split type.
  • FIG. 10 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the silo split type.
  • FIG. 11 sets forth a flow chart illustrating an exemplary method for application splitting for network edge for the façade split type.
  • DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS Introduction
  • The present invention is described to a large extent in this specification in terms of methods for application splitting for network edge computing. Persons skilled in the art, however, will recognize that any computer system that includes suitable programming means for operating in accordance with the disclosed methods also falls well within the scope of the present invention. Suitable programming means include any means for directing a computer system to execute the steps of the method of the invention, including for example, systems comprised of processing units and arithmetic-logic circuits coupled to computer memory, which systems have the capability of storing in computer memory, which computer memory includes electronic circuits configured to store data and program instructions, programmed steps of the method of the invention for execution by a processing unit.
  • The invention also may be embodied in a computer program product, such as a diskette or other recording medium, for use with any suitable data processing system. Embodiments of a computer program product may be implemented by use of any recording medium for machine-readable information, including magnetic media, optical media, or other suitable media. Persons skilled in the art will immediately recognize that any computer system having suitable programming means will be capable of executing the steps of the method of the invention as embodied in a program product. Persons skilled in the art will recognize immediately that, although most of the exemplary embodiments described in this specification are oriented to software installed and executing on computer hardware, nevertheless, alternative embodiments implemented as firmware or as hardware are well within the scope of the present invention.
  • Application Splitting For Network Edge Computing
  • Methods, systems, and products are described for application splitting for network edge computing with reference to the accompanying drawings, beginning with FIG. 1. FIG. 1 sets forth a system diagram of an exemplary system for application splitting for network edge computing according to embodiments of the present invention. The system of FIG. 1 includes several exemplary client devices (126) connected through wide area network (101) to several edge server configured as an edge network (106). The edge servers are in turn connected through local area network (103) to several application and content servers represented as enterprise servers (124).
  • The clients (126) in the example of FIG. 1 include a personal computer (108) connected to wide area network (101) through wireline connection (120), a wireless, network-enabled personal digital assistant (“PDA”) (112) connected to wide area network (101) through wireless connection (114), and mobile telephone (110) connected to wide area network (101) through wireless connection (116).
  • The system of FIG. 1 includes an application program (130) that is under development on development system (129) for splitting into two modules, an edge module (134) for installation on the edge network (106) and an enterprise module (132) for installation on the enterprise network (124). Development system (129) is a computer having a software development environment such as the Java™ Software Development Kit (“SDK”) and also having analysis modules and a splitter (128) that operate generally by identifying application split points, identifying split types for the application split points, splitting applications into subcomponents in accordance with the split types, and moving some subcomponents to an edge network.
  • For further explanation, FIG. 2 sets forth a block diagram illustrating an exemplary software development system that operates generally by identifying application split points, identifying split types for the application split points, splitting applications into subcomponents in accordance with the split types, and moving some subcomponents to an edge network. The exemplary system of FIG. 2 includes a JDBC™ analysis module (202) that operates generally to identify application split points as classes that call Java DataBase Connectivity (“JDBC”) functions to update enterprise databases. Such calls to JDBC functions may be represented, for example, as calls to Java member methods named ‘executeUpdate’ or ‘executeInsert.’
  • The exemplary system of FIG. 2 also includes an EJB™ analysis module (204) that operates generally to identify application split points as classes that call Enterprise Java Beans (“EJBs”). Classes that call EJBs may be identified, for example, as classes that construct session EJBs using calls to the EJB Properties( ) constructor, the InitialContext( ) constructor, and so on.
  • The exemplary system of FIG. 2 also includes a JCA™ analysis module (206) that operates generally to identify application split points as classes that call Java Connector Architecture (“JCAs”) functions. Classes that call JCAs functions may be identified, for example, as classes using calls to the JCA ConnectionFactory( ), the createInteraction( ) method, the Interaction.execute( ) method, and so on.
  • In the example of FIG. 2, the analytic modules (202, 204, and 206) identify split points as a list of potential split point. For each split point so identified, the split type analysis module (208) identifies a split type. The split type analysis module operates generally to identify an EJB split type for split points that are classes that call EJB functions. The split type analysis module operates to identify a Silo split type for split points that are classes that update enterprise databases through, for example JDBC calls. The split type analysis module operates to identify a Silo split type for split points that are classes that make HTTP calls. The split type analysis module operates to identify a façade split type for split points that are classes identified more than once by the analytic modules (202, 204, and 206) as potential split points.
  • The exemplary system of FIG. 2 includes a splitter (210), a software module that generally carries out the work of creating subcomponents of the application (130) by splitting the application at the identified split points in accordance with the split type for each split point. For EJB split type, splitter (210) may split application (130) into a client RMI™ (“Java Remote Method Invocation”) module and a server RMI module, move the client RMI module to an edge network as an EJB edge module (216), and move the server RMI module to an enterprise network as an EJB enterprise module (218). Alternatively for the EJB split type, splitter (210) may split application (130) into a client web services module and a server web services module, move the client web services module to an edge network as an EJB edge module (216), and move the server web services module to an enterprise network as an EJB enterprise module (218). Similarly, for the façade split type, splitter (210) may split application (130) into a client web services module and a server web services module, move the client web services module to an edge network as a façade edge module (212), and move the server web services module to an enterprise network as a façade enterprise module (214). For the silo split type, splitter (210) may aggregate as one subcomponent all the classes in the calling hierarchy into a silo module (220). The splitter (210) may move the silo module (220) to an edge network or to an enterprise network.
  • For further explanation, FIG. 3 sets forth a flow chart illustrating an exemplary method for application splitting for network edge computing that includes identifying (302) an application split point (310). FIG. 4 sets forth a flow chart illustrating an exemplary method for identifying an application split point. In the example of FIG. 4 identifying an application split point is carried out by identifying (402) a class of the application that calls an EJB. As noted above, a class that calls an EJB can be identified by its use of EJB member methods such as calls to the EJB Properties( ) constructor, the InitialContext( ) constructor, and so on. In the method of FIG. 4, identifying an application split point also can be carried out by identifying (404) a class of the application that updates an enterprise database through, for example, calls to JDBC methods such as ‘executeUpdate’ or ‘executeInsert.’ In the method of FIG. 4, identifying an application split point can be carried out by identifying (405) a class of the application that calls a JCA function. Classes that call JCA functions may be identified, for example, as classes using calls to the JCA ConnectionFactory( ), the createInteraction( ) method, the Interaction.execute( ) method, and so on.
  • Again with reference to FIG. 3: The method of FIG. 3 also includes identifying (304) a split type (312) for the application split point. FIG. 5 sets forth a flow chart illustrating exemplary methods for identifying a split type for an application split point. In the example of FIG. 5, identifying a split type for the application split point includes identifying a silo split type (504) for the application split point. In the example of FIG. 5, identifying a silo split type (504) for the application split point can be carried out by identifying (502), from a list of potential split points (406) and the application (130), classes in the application that call an HTTP function and recording (506) the calling hierarchy of the identified class. Examples of HTTP functions include Java member methods in HTTPRequest classes, HTTPResponse classes, and HTTPSession classes.
  • In the example of FIG. 5, identifying a silo split type can also be carried out by identifying (514), from a list of potential split points (406) and the application (130), a class that updates an enterprise database. A class that updates an enterprise database may be identified, for example, by calls to JDBC member methods such as ‘executeUpdate’ and ‘executeInsert.’ In the method of FIG. 5, identifying a split type for the application split point includes identifying (508) an EJB split type (510) for the application split point. In the method of FIG. 5, identifying an EJB split type can be carried out by identifying (508), from a list of potential split points (406) and from the application (130) source code, a class that calls an EJB, indicated, for example, by calls to the EJB Properties( ) constructor, the InitialContext( ) constructor, and so on.
  • In the method of FIG. 5, identifying a split type for the application split point includes identifying a façade split type (514) for the application split point. In the method of FIG. 5, identifying a façade split type (514) for the application split point can be carried out by identifying (512), from a list of potential split points, a class that is listed more than once as a potential split point.
  • The method of FIG. 5 also includes assigning (518) all remaining unassigned classes on the list of potential split points to the silo split type (504). That is, in scanning through the classes listed as potential split points, a split type analysis module such as the one shown at reference (208) on FIG. 2, assigns the split type ‘silo’ to each split point that is not already identified as an EJB split type or a façade split type.
  • Some embodiments according to the present invention implement all three kinds of splits: silo splits, façade splits, and EJB splits. In such embodiments, a split point that calls HTTP functions or updates an enterprise database and also calls EJBs or is listed more than once as a potential split point may be classified as a silo split type and an EJB split type or a façade split type. That is, one split point may be assigned more than one split type. In order to avoid conflicts among the split types, such embodiments may advantageously permit only one split type per split point, implemented by deleting (516) from the silo split type (504) any split point that is also identified as an EJB split type (510) or a façade split type (514).
  • Again with reference to FIG. 3: The method of FIG. 3 also includes splitting (306) the application into subcomponents (314) in accordance with the split type and moving (308) a subcomponent to an edge network (106). For EJB split type, the method of FIG. 3 includes splitting the application (130) into a client RMI™ (“Java Remote Method Invocation”) module and a server RMI module, and moving the client RMI module to an edge network, and moving the server RMI module to an enterprise network. Alternatively for the EJB split type, the method of FIG. 3 includes splitting the application (130) into a client web services module and a server web services module, moving the client web services module to an edge network, and moving the server web services module to an enterprise network. Similarly, for the façade split type, the method of FIG. 3 includes splitting the application (130) into a client web services module and a server web services module, moving the client web services module to an edge network, and moving the server web services module to an enterprise network. For the silo split type, the method of FIG. 3 includes aggregating as one subcomponent all the classes in the calling hierarchy into a silo module and moving the silo module to an edge network or to an enterprise network.
  • In the method of FIG. 3 splitting (306) the application includes splitting the application in dependence upon a user preferences (303). Examples of such user preferences include:
      • no split—if entire application and its database will fit on the edge network
      • identify and split by silo split types only
      • identify and split by façade split types only
      • identify and split by EJB split types only
      • identify all split types, but split by silo only
      • identify all split types, but split by façade only
      • identify all split types, but split by EJB only
      • identify all split types, and split by priority: silo/façade/EJB
  • The first exemplary user preference recites “no split—if entire application and its database will fit on the edge network.” In such an example if the entire application and its database will fit on the edge network, the application is not split and the entire application is moved to the edge network. The method of FIG. 3 therefore also includes determining whether the application considered with the data it administers is too large to fit on the edge network. One way of determining whether the application considered with the data it administers is too large to fit on the edge network is carried out by comparing the available data storage capacity of edge network and the data storage requirement for the application and the data in the databases administered by the application.
  • The user preferences listed above (“identify all split types, and split by priority: silo/façade/EJB”) means that if more than one split type is present, the application is split in dependence upon priority of present split types, in this case silo split types are preferred to façade split types and façade split types are preferred to EJB split types. That is, if all split types are present, split by silo only. If only façade and EJB split types are present, split by façade only. If only EJB split types are present, split by EJB.
  • Splitting (306) the application into subcomponents (314) in accordance with the split type also advantageously includes a check (not shown) that each class to be included a subcomponent is serializable. Most Java classes are serializable—unless, for example, a member method takes a native data type, such as a character or integer, for example, among its call parameters. Checking that each class in a subcomponent is serializable, therefore, may be carried out by scanning the application source code of references to native data types, reporting the discover of such native data types, and converting them to Java classes and references to Java objects.
  • In addition, splitting (306) the application into subcomponents (314) in accordance with the split type also may advantageously include glue insertion. That is, a subcomponent to be moved to an edge network may include data to be maintained statefully across multiple request/response exchanges. Such stateful data may be maintained in a Java HTTPSession object, for example. When application functionality is split between the edge network and the enterprise network, the stateful data may usefully be maintained on both the edge server and the enterprise server. The software used to communicate the stateful data from an edge module to a corresponding enterprise module is referred to as ‘glue.’ In typical embodiments of the present invention, splitting (306) the application into subcomponents (314) in accordance with the split type also advantageously includes checking for the presence of classes that maintain such stateful data, such as classes containing HTTPSession objects or references to HTTPSession objects, for example, and inserting one or more glue classes and calls to glue classes to assure that the stateful data is made available as needed in both the edge module and its related enterprise modules.
  • For further explanation, FIG. 6 sets forth a flow chart illustrating an exemplary method for application splitting for network edge computing for the EJB split type. That is, in the example of FIG. 6, the application split point (310) is identified as a class in a calling hierarchy that calls an EJB and the split type (312) is identified as an EJB split type. In the method of FIG. 6, splitting (306) the application into subcomponents (314) in accordance with the split type is carried out by splitting the classes in the calling hierarchy into a client RMI module (602) and a server RMI module (604). In the method of FIG. 6, moving (308) a subcomponent to an edge network is carried out by moving the client RMI module (602) to the edge network (106).
  • For further explanation, FIG. 7 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the EJB split type. That is, the application split point (310) is identified as a class in a calling hierarchy that calls an EJB, and the split type (312) is identified as an EJB split type. In the method of FIG. 7, splitting (306) the application (130) into subcomponents (314) in accordance with the split type (312) is carried out by splitting the classes in the calling hierarchy into a client web services module (702) and a server web services module (704). In the method of FIG. 7, moving (308) a subcomponent to an edge network (106) is carried out by moving the client web services (702) module to the edge network (106).
  • For further explanation, FIG. 8 sets forth a flow chart illustrating an exemplary method for application splitting for network edge for the silo split type. In the example of FIG. 8, the application split point (310) is identified as a class in a calling hierarchy that updates an enterprise database, and the split type (312) is identified as a silo split type. In the method of FIG. 8, splitting (306) the application (130) into subcomponents (314) in accordance with the split type (312) is carried out by aggregating as one subcomponent all the classes in the calling hierarchy into a silo module (802). In the method of FIG. 8, moving (308) a subcomponent to an edge network (106) is carried out by moving the silo module (802) to the edge network (106).
  • For further explanation, FIG. 9 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the silo split type. In the example of FIG. 9, the application split point (310) is identified as a class in a calling hierarchy that calls an EJB and calls an HTTP function and the split type (312) is identified as a silo split type. In the method of FIG. 9, splitting (306) the application (130) into subcomponents (314) in accordance with the split type is carried out by aggregating as one subcomponent all the classes in the calling hierarchy into a silo module (802). In the method of FIG. 9, moving (308) a subcomponent to an edge network (106) is carried out by moving the silo module (802) to the edge network (106).
  • For further explanation, FIG. 10 sets forth a flow chart illustrating another exemplary method for application splitting for network edge computing for the silo split type. In the example of FIG. 10, the application split point (310) is identified as a class in a calling hierarchy that calls a JCA function and calls an HTTP function, and the split type (312) is identified as a silo split type. In the example of FIG. 10, splitting (306) the application (130) into subcomponents (314) in accordance with the split type (312) is carried out by aggregating as one subcomponent all the classes in the calling hierarchy into a silo module (802). In the example of FIG. 10, moving (308) a subcomponent to an edge network (106) is carried out by moving the silo module (802) to the edge network (106).
  • For further explanation, FIG. 11 sets forth a flow chart illustrating an exemplary method for application splitting for network edge for the façade split type. In the example of FIG. 11, the application split point (310) is identified as a class in a calling hierarchy that is listed more than once as a potential split point, and the split type (312) is identified as a façade split type. In the method of FIG. 11, splitting (306) the application (130) into subcomponents (314) in accordance with the split type (312) is carried out by splitting the classes in the calling hierarchy into a client web services module (702) and a server web services module (704). In the method of FIG. 11, moving (308) a subcomponent to an edge network (106) is carried out by moving the client web services module (702) to the edge network (106).
  • It will be understood from the foregoing description that modifications and changes may be made in various embodiments of the present invention without departing from its true spirit. The descriptions in this specification are for purposes of illustration only and are not to be construed in a limiting sense. The scope of the present invention is limited only by the language of the following claims.

Claims (30)

1. A method for application splitting for network edge computing, the method comprising:
identifying an application split point;
identifying a split type for the application split point;
splitting the application into subcomponents in accordance with the split type; and
moving a subcomponent to an edge network.
2. The method of claim 1 wherein identifying an application split point further comprises identifying a class of the application that calls an EJB.
3. The method of claim 1 wherein identifying an application split point further comprises identifying a class of the application that updates an enterprise database.
4. The method of claim 1 wherein identifying an application split point further comprises identifying a class of the application that calls a JCA function.
5. The method of claim 1 wherein identifying a split type for the application split point further comprises identifying a silo split type for the application split point.
6. The method of claim 1 wherein identifying a split type for the application split point further comprises identifying an EJB split type for the application split point.
7. The method of claim 1 wherein identifying a split type for the application split point further comprises identifying a façade split type for the application split point.
8. The method of claim 1 wherein:
the application split point comprises a class in a calling hierarchy that calls an EJB;
the split type comprises an EJB split type;
splitting the application into subcomponents in accordance with the split type further comprises splitting the classes in the calling hierarchy into a client RMI module and a server RMI module; and
moving a subcomponent to an edge network further comprises moving the client RMI module to the edge network.
9. The method of claim 1 wherein:
the application split point comprises a class in a calling hierarchy that calls an EJB;
the split type comprises an EJB split type;
splitting the application into subcomponents in accordance with the split type further comprises splitting the classes in the calling hierarchy into a client web services module and a server web services module; and
moving a subcomponent to an edge network further comprises moving the client web services module to the edge network.
10. The method of claim 1 wherein:
the application split point comprises a class in a calling hierarchy that updates an enterprise database;
the split type comprises a silo split type;
splitting the application into subcomponents in accordance with the split type) further comprises aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and
moving a subcomponent to an edge network further comprises moving the silo module to the edge network.
11. The method of claim 1 wherein:
the application split point comprises a class in a calling hierarchy that calls an EJB and calls an HTTP function;
the split type comprises a silo split type;
splitting the application into subcomponents in accordance with the split type further comprises aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and
moving a subcomponent to an edge network further comprises moving the silo module to the edge network.
12. The method of claim 1 wherein:
the application split point comprises a class in a calling hierarchy that calls a JCA function and calls an HTTP function;
the split type comprises a silo split type;
splitting the application into subcomponents in accordance with the split type further comprises aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and
moving a subcomponent to an edge network further comprises moving the silo module to the edge network.
13. The method of claim 1 wherein:
the application split point comprises a class in a calling hierarchy that is listed more than once as a potential split point;
the split type comprises a façade split type;
splitting the application into subcomponents in accordance with the split type further comprises splitting the classes in the calling hierarchy into a client web services module and a server web services module; and
moving a subcomponent to an edge network further comprises moving the client web services module to the edge network.
14. A system for application splitting for network edge computing, the system comprising:
means for identifying an application split point;
means for identifying a split type for the application split point;
means for splitting the application into subcomponents in accordance with the split type; and
means for moving a subcomponent to an edge network.
15. The system of claim 14 wherein means for identifying an application split point further comprises means for identifying a class of the application that calls an EJB.
16. The system of claim 14 wherein means for identifying an application split point further comprises means for identifying a class of the application that updates an enterprise database.
17. The system of claim 14 wherein means for identifying an application split point further comprises means for identifying a class of the application that calls a JCA function.
18. The system of claim 14 wherein means for identifying a split type for the application split point further comprises means for identifying a silo split type for the application split point.
19. The system of claim 14 wherein means for identifying a split type for the application split point further comprises means for identifying an EJB split type for the application split point.
20. The system of claim 14 wherein means for identifying a split type for the application split point further comprises means for identifying a façade split type for the application split point.
21. The system of claim 14 wherein:
the application split point comprises a class in a calling hierarchy that calls an EJB;
the split type comprises an EJB split type;
means for splitting the application into subcomponents in accordance with the split type further comprises means for splitting the classes in the calling hierarchy into a client RMI module and a server RMI module; and
means for moving a subcomponent to an edge network further comprises means for moving the client RMI module to the edge network.
22. A computer program product for application splitting for network edge computing, the computer program product comprising:
a recording medium;
means, recorded on the recording medium, for identifying an application split point;
means, recorded on the recording medium, for identifying a split type for the application split point;
means, recorded on the recording medium, for splitting the application into subcomponents in accordance with the split type; and
means, recorded on the recording medium, for moving a subcomponent to an edge network.
23. The computer program product of claim 22 wherein means, recorded on the recording medium, for identifying a split type for the application split point further comprises means, recorded on the recording medium, for identifying an EJB split type for the application split point.
24. The computer program product of claim 22 wherein means, recorded on the recording medium, for identifying a split type for the application split point further comprises means, recorded on the recording medium, for identifying a façade split type for the application split point.
25. The computer program product of claim 22 wherein:
the application split point comprises a class in a calling hierarchy that calls an EJB;
the split type comprises an EJB split type;
means, recorded on the recording medium, for splitting the application into subcomponents in accordance with the split type further comprises means, recorded on the recording medium, for splitting the classes in the calling hierarchy into a client RMI module and a server RMI module; and
means, recorded on the recording medium, for moving a subcomponent to an edge network further comprises means, recorded on the recording medium, for moving the client RMI module to the edge network.
26. The computer program product of claim 22 wherein:
the application split point comprises a class in a calling hierarchy that calls an EJB;
the split type comprises an EJB split type;
means, recorded on the recording medium, for splitting the application into subcomponents in accordance with the split type further comprises means, recorded on the recording medium, for splitting the classes in the calling hierarchy into a client web services module and a server web services module; and
means, recorded on the recording medium, for moving a subcomponent to an edge network further comprises means, recorded on the recording medium, for moving the client web services module to the edge network.
27. The computer program product of claim 22 wherein:
the application split point comprises a class in a calling hierarchy that updates an enterprise database;
the split type comprises a silo split type;
means, recorded on the recording medium, for splitting the application into subcomponents in accordance with the split type) further comprises means, recorded on the recording medium, for aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and
means, recorded on the recording medium, for moving a subcomponent to an edge network further comprises means, recorded on the recording medium, for moving the silo module to the edge network.
28. The computer program product of claim 22 wherein:
the application split point comprises a class in a calling hierarchy that calls an EJB and calls an HTTP function;
the split type comprises a silo split type;
means, recorded on the recording medium, for splitting the application into subcomponents in accordance with the split type further comprises means, recorded on the recording medium, for aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and
means, recorded on the recording medium, for moving a subcomponent to an edge network further comprises means, recorded on the recording medium, for moving the silo module to the edge network.
29. The computer program product of claim 22 wherein:
the application split point comprises a class in a calling hierarchy that calls a JCA function and calls an HTTP function;
the split type comprises a silo split type;
means, recorded on the recording medium, for splitting the application into subcomponents in accordance with the split type further comprises means, recorded on the recording medium, for aggregating as one subcomponent all the classes in the calling hierarchy into a silo module; and
means, recorded on the recording medium, for moving a subcomponent to an edge network further comprises means, recorded on the recording medium, for moving the silo module to the edge network.
30. The computer program product of claim 22 wherein:
the application split point comprises a class in a calling hierarchy that is listed more than once as a potential split point;
the split type comprises a façade split type;
means, recorded on the recording medium, for splitting the application into subcomponents in accordance with the split type further comprises means, recorded on the recording medium, for splitting the classes in the calling hierarchy into a client web services module and a server web services module; and
means, recorded on the recording medium, for moving a subcomponent to an edge network further comprises means, recorded on the recording medium, for moving the client web services module to the edge network.
US10/889,777 2004-07-13 2004-07-13 Application splitting for network edge computing Expired - Fee Related US7634755B2 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US10/889,777 US7634755B2 (en) 2004-07-13 2004-07-13 Application splitting for network edge computing
JP2007520794A JP5046161B2 (en) 2004-07-13 2005-06-08 Application partitioning for network edge computing
CNB2005800234709A CN100547545C (en) 2004-07-13 2005-06-08 The method and system that is used for the application fractionation of network edge calculating
EP05749107A EP1782185A1 (en) 2004-07-13 2005-06-08 Application splitting for network edge computing
PCT/EP2005/052632 WO2006005655A1 (en) 2004-07-13 2005-06-08 Application splitting for network edge computing
TW094122580A TWI354900B (en) 2004-07-13 2005-07-04 Method, system, and computer program product for a

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/889,777 US7634755B2 (en) 2004-07-13 2004-07-13 Application splitting for network edge computing

Publications (2)

Publication Number Publication Date
US20060015849A1 true US20060015849A1 (en) 2006-01-19
US7634755B2 US7634755B2 (en) 2009-12-15

Family

ID=34969341

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/889,777 Expired - Fee Related US7634755B2 (en) 2004-07-13 2004-07-13 Application splitting for network edge computing

Country Status (6)

Country Link
US (1) US7634755B2 (en)
EP (1) EP1782185A1 (en)
JP (1) JP5046161B2 (en)
CN (1) CN100547545C (en)
TW (1) TWI354900B (en)
WO (1) WO2006005655A1 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060195688A1 (en) * 2005-02-28 2006-08-31 International Business Machines Corporation Method, system and program product for managing applications in a shared computer infrastructure
US20060212512A1 (en) * 2005-02-28 2006-09-21 International Business Machines Corporation Method, system, and program product for optimizing monitoring and discovery services for a grid computing environment
US20070209034A1 (en) * 2006-03-01 2007-09-06 International Business Machines Corporation Method, system, and program product for deploying a platform dependent application in a grid environment
GB2557611A (en) * 2016-12-12 2018-06-27 Virtuosys Ltd Edge computing system
US10834017B2 (en) 2018-11-11 2020-11-10 International Business Machines Corporation Cloud-driven hybrid data flow and collection
US11036536B2 (en) 2016-06-27 2021-06-15 Huawei Technologies Co., Ltd. Method, apparatus, and system for deploying virtualized network function using network edge computing
US11212231B2 (en) 2017-03-28 2021-12-28 Hitachi, Ltd. Data processing system and method of controlling the same
US11277488B2 (en) 2016-12-12 2022-03-15 Veea Systems Ltd. Method and apparatus for downloading an application to an edge computing system
EP4083796A1 (en) * 2021-04-29 2022-11-02 ABB Schweiz AG Flexible update mechanism for stateful applications

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5337666B2 (en) * 2009-04-22 2013-11-06 株式会社日立製作所 Component design support device
US10382518B2 (en) 2016-03-22 2019-08-13 Google Llc Low latency applications using multiple servers
WO2019060716A1 (en) 2017-09-25 2019-03-28 Freenome Holdings, Inc. Methods and systems for sample extraction
EP4011037A4 (en) * 2019-08-08 2022-10-05 Samsung Electronics Co., Ltd. Method and system for intent driven deployment and management of communication service in a wireless communication system
CN110716765B (en) * 2019-09-29 2023-04-07 浙江网新恒天软件有限公司 Method for applying Faas to monomer

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6011918A (en) * 1998-04-22 2000-01-04 International Business Machines Corporation Methods, systems and computer program products for generating client/server applications
US20020010798A1 (en) * 2000-04-20 2002-01-24 Israel Ben-Shaul Differentiated content and application delivery via internet
US20020165993A1 (en) * 2001-05-04 2002-11-07 Andre Kramer System and method of partitioning software components of a monolithic component-based application program to separate graphical user interface elements for local execution at a client system in conjunction with remote execution of the application program at a server system
US20030135591A1 (en) * 2002-01-15 2003-07-17 International Business Machines Corporation Distributed application deployment using program characteristics and environment characteristics
US20030154239A1 (en) * 2002-01-11 2003-08-14 Davis Andrew Thomas Java application framework for use in a content delivery network (CDN)
US20030212990A1 (en) * 2002-05-08 2003-11-13 Thomas Brodkorb Software delivery manager
US20040216096A1 (en) * 2003-04-28 2004-10-28 Alan Messer Partitioning of structured programs
US6813637B2 (en) * 2002-03-15 2004-11-02 Sun Microsystems, Inc. System and method for automatically partitioning an application between a web server and an application server
US6910052B2 (en) * 1999-05-10 2005-06-21 Apple Computer, Inc. Distributing and synchronizing objects
US6950850B1 (en) * 2000-10-31 2005-09-27 International Business Machines Corporation System and method for dynamic runtime partitioning of model-view-controller applications
US6983463B1 (en) * 1998-10-02 2006-01-03 Microsoft Corporation Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment
US7103879B2 (en) * 2001-01-16 2006-09-05 Canon Kabushiki Kaisha Method and device for partitioning a computer program

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69428809D1 (en) 1993-08-03 2001-11-29 Sun Microsystems Inc FLEXIBLE MULTIPLE PLATFORM DIVISION FOR COMPUTER APPLICATIONS
JPH10254686A (en) * 1997-03-07 1998-09-25 Mitsubishi Electric Corp Object oriented programming supporting device
JP2000112759A (en) * 1998-09-30 2000-04-21 Hitachi Software Eng Co Ltd Static analyzing method and optimizing method of program in distributed object environment
US7210143B2 (en) 2002-07-17 2007-04-24 International Business Machines Corporation Deployment of applications in a multitier compute infrastructure

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6011918A (en) * 1998-04-22 2000-01-04 International Business Machines Corporation Methods, systems and computer program products for generating client/server applications
US6983463B1 (en) * 1998-10-02 2006-01-03 Microsoft Corporation Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment
US6910052B2 (en) * 1999-05-10 2005-06-21 Apple Computer, Inc. Distributing and synchronizing objects
US20020010798A1 (en) * 2000-04-20 2002-01-24 Israel Ben-Shaul Differentiated content and application delivery via internet
US6950850B1 (en) * 2000-10-31 2005-09-27 International Business Machines Corporation System and method for dynamic runtime partitioning of model-view-controller applications
US7103879B2 (en) * 2001-01-16 2006-09-05 Canon Kabushiki Kaisha Method and device for partitioning a computer program
US20020165993A1 (en) * 2001-05-04 2002-11-07 Andre Kramer System and method of partitioning software components of a monolithic component-based application program to separate graphical user interface elements for local execution at a client system in conjunction with remote execution of the application program at a server system
US20030154239A1 (en) * 2002-01-11 2003-08-14 Davis Andrew Thomas Java application framework for use in a content delivery network (CDN)
US20030135591A1 (en) * 2002-01-15 2003-07-17 International Business Machines Corporation Distributed application deployment using program characteristics and environment characteristics
US6813637B2 (en) * 2002-03-15 2004-11-02 Sun Microsystems, Inc. System and method for automatically partitioning an application between a web server and an application server
US20030212990A1 (en) * 2002-05-08 2003-11-13 Thomas Brodkorb Software delivery manager
US20040216096A1 (en) * 2003-04-28 2004-10-28 Alan Messer Partitioning of structured programs

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212512A1 (en) * 2005-02-28 2006-09-21 International Business Machines Corporation Method, system, and program product for optimizing monitoring and discovery services for a grid computing environment
US8286157B2 (en) 2005-02-28 2012-10-09 International Business Machines Corporation Method, system and program product for managing applications in a shared computer infrastructure
US20060195688A1 (en) * 2005-02-28 2006-08-31 International Business Machines Corporation Method, system and program product for managing applications in a shared computer infrastructure
US7904547B2 (en) 2006-02-21 2011-03-08 International Business Machines Corporation Method, system, and program product for optimizing monitoring and discovery services for a grid computing environment
WO2007099073A1 (en) * 2006-03-01 2007-09-07 International Business Machines Corporation Method, system, and program product for deploying a platform dependent application in a grid environment
US8117611B2 (en) 2006-03-01 2012-02-14 International Business Machines Corporation Method, system, and program product for deploying a platform dependent application in a grid environment
US20070209034A1 (en) * 2006-03-01 2007-09-06 International Business Machines Corporation Method, system, and program product for deploying a platform dependent application in a grid environment
US11036536B2 (en) 2016-06-27 2021-06-15 Huawei Technologies Co., Ltd. Method, apparatus, and system for deploying virtualized network function using network edge computing
GB2557611A (en) * 2016-12-12 2018-06-27 Virtuosys Ltd Edge computing system
US11095713B2 (en) 2016-12-12 2021-08-17 Veea Systems Ltd. Edge computing system
US11277488B2 (en) 2016-12-12 2022-03-15 Veea Systems Ltd. Method and apparatus for downloading an application to an edge computing system
US11394771B2 (en) 2016-12-12 2022-07-19 Veea Systems Ltd. Edge computing system
US11212231B2 (en) 2017-03-28 2021-12-28 Hitachi, Ltd. Data processing system and method of controlling the same
US10834017B2 (en) 2018-11-11 2020-11-10 International Business Machines Corporation Cloud-driven hybrid data flow and collection
EP4083796A1 (en) * 2021-04-29 2022-11-02 ABB Schweiz AG Flexible update mechanism for stateful applications

Also Published As

Publication number Publication date
CN100547545C (en) 2009-10-07
US7634755B2 (en) 2009-12-15
CN1985240A (en) 2007-06-20
TW200627178A (en) 2006-08-01
TWI354900B (en) 2011-12-21
EP1782185A1 (en) 2007-05-09
JP2008507014A (en) 2008-03-06
JP5046161B2 (en) 2012-10-10
WO2006005655A1 (en) 2006-01-19

Similar Documents

Publication Publication Date Title
EP1782185A1 (en) Application splitting for network edge computing
US20070067440A1 (en) Application splitting for network edge computing
US9332063B2 (en) Versatile application configuration for deployable computing environments
US9459924B2 (en) Locating service endpoints from a service registry
US8321852B2 (en) System and method for extending a component-based application platform with custom services
US7337436B2 (en) System and method for cross platform and configuration build system
US6467088B1 (en) Reconfiguration manager for controlling upgrades of electronic devices
US7900214B2 (en) System and method for adaptable provisioning of generic application content
US9323519B2 (en) Packaging an application
RU2421780C2 (en) Tracking and synchronising partial change in elements
US8185494B2 (en) Data-driven synchronization
CN1964356B (en) Method and system for data processing
US7380237B2 (en) System and method for extending capabilities and execution efficiency of script based applications
US7669205B2 (en) Using messages to extend CRM functionality
US20070005642A1 (en) Modification of logic in an application
US7302681B2 (en) Method and system for customized information handling system support updates
CN114546563B (en) Multi-tenant page access control method and system
US20070083607A1 (en) Method of operating a computer network
US20080216050A1 (en) Method and System for Accessing a Resource Implemented in a Computer Network
US20130124611A1 (en) Unified repository & tool infrastructure
US9032087B2 (en) Providing a fine-grained response from a coarse-grained service object
CN116627415A (en) Page generation method, page generation device, computer equipment and readable storage medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:POLOZOFF, ALEXANDRE;REEL/FRAME:015060/0282

Effective date: 20040712

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
FEPP Fee payment procedure

Free format text: 7.5 YR SURCHARGE - LATE PMT W/IN 6 MO, LARGE ENTITY (ORIGINAL EVENT CODE: M1555)

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552)

Year of fee payment: 8

AS Assignment

Owner name: SERVICENOW, INC., CALIFORNIA

Free format text: CONVEYOR IS ASSIGNING UNDIVIDED 50% INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:045179/0815

Effective date: 20180122

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: CONVEYOR IS ASSIGNING UNDIVIDED 50% INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:045179/0815

Effective date: 20180122

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20211215