CA2349654A1 - Server configuration versioning tool - Google Patents
Server configuration versioning tool Download PDFInfo
- Publication number
- CA2349654A1 CA2349654A1 CA002349654A CA2349654A CA2349654A1 CA 2349654 A1 CA2349654 A1 CA 2349654A1 CA 002349654 A CA002349654 A CA 002349654A CA 2349654 A CA2349654 A CA 2349654A CA 2349654 A1 CA2349654 A1 CA 2349654A1
- Authority
- CA
- Canada
- Prior art keywords
- server
- server configuration
- application
- data
- configure
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims description 37
- 230000008569 process Effects 0.000 claims description 6
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 4
- 230000006978 adaptation Effects 0.000 claims 1
- 230000004048 modification Effects 0.000 abstract description 11
- 238000012986 modification Methods 0.000 abstract description 11
- 238000011161 development Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 230000008901 benefit Effects 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 235000006719 Cassia obtusifolia Nutrition 0.000 description 1
- 235000014552 Cassia tora Nutrition 0.000 description 1
- 244000201986 Cassia tora Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Embodiments of the invention enable the association of server configuration data with an application or project. Additionally, embodiments of the invention may enable multiple versions of server configuration data (which in some embodiments are versioned separately from the associated application or project) to be stored. Advantageously embodiments of the invention enable a server to be configured in accordance with versioned configuration data (often stored in one or more configuration files) such that the server performs in a well understood manner. This advantageous feature enables, amongst others, a developer to more quickly identify the source of any problems which may have been introduced as a result of modifications made to the application being tested.
Description
SERVER CONFIGURATION VERSIONING TOOL
FIELD OF THE INVENTION
The present invention relates to configuration of servers and, more particularly, to a server configuration versioning tool.
BACKGROUND OF THE INVENTION
Computer servers are widely used in many computer installations. A computer server, forming part of a network of computer servers (hereinafter "servers") and computer clients (hereinafter "clients"), will receive requests for data, provide a wide variety of data processing services and transmit data to clients and other servers.
Servers, operating or being deployed on a computer system, provide a multitude of functions and services to other servers and other computer clients. A computer system may operate to act as a single server or may enable a number of servers to operate, independently.
Some well known types of servers include, for example, print servers (which provide printing services to other servers and/or clients), web servers (which provide web page services to connected computers), file servers (which provide file access and file storage services), application servers (which may provide business logic or application delivery services), database servers (which provide for the storage of databases and/or database management services) as well as many others.
Generically, a server will enable another computer (whether another server or a client) to process (e.g., running or execution, storage, handling, etc.) user code. User code can be any type of data such as executable code, applications, files, databases and the like.
As will be understood by those of ordinary skill in the art, there numerous type of environments in which a server may be deployed. Examples ofd different operating environment variables which may affect the operation of a server include: whether a server may be one of many servers operating on a single computer system; the location in the network of a server; the location of files on the computer system or the network; the operating system being employed on the computer system in which the server is deployed; the user code the server is to process; as well as many parameters and variables. In order to reflect the variety of environments in which a server may be deployed, a server is typically configured in order to operate properly on the computer system on which the server will be deployed (i.e., located and executed).
As is known to those skilled in the art, the proper operation of an application which is to processed or executed by a server depends on the configuration of the processing server. That is, an application may be designed to operate on a particular server (e.g., a Tomcat or WebSphere"
web server) provided that particular server is properly configured. A server, otherwise capable of processing or executing an application, may, when improperly configured, fail to properly process the application.
In the present development environment, applications are developed in the development environment where the application is coded and then tested (with these steps being repeated as necessary) until an application is deemed to be ready for deployment in a customer or operating setting. Also during the development phase the application, a developer typically will "version"
the application using version control software. That is, the developer will store the various components (e.g., source code files, object code, EJBs, JSPs, etc.) in a repository (e.g., a database) which allows for the application (or a portion thereof] at a specified point in time to be saved. The version control software provides for the automated management solution for controlling, maintaining and tracking software development. Versioning control software (also known as source control management - SCM) typically enables files to be "checked out" and "checked in". Thus, when an application is being developed by a team of developers, the versioning control software will allow different versions of the application to be saved and retrieved. SCM software, in some instances, will also allow multiple changes to be made concurrently by different developers, and then merged correctly. Other features of versioning control software are known to those skilled in the art.
As an application progresses through the development process, an application developer may test the application-under-development on a server configured by the developer or another member of the team to which the developer belongs.
As a result of this present application development environment, application developers are focussed on the various artifacts (e.g., Enterprise Java Beans - EJBs, servlets, JavaServer Pages - JSPs, HTML files, etc.) that form the application and are not, generally, concerned with the server side operation and configuration.
After (many) modifications due to developer based testing, an application may be transferred to a person or team dedicated to testing or licensed to a customer. The deployment setting then involves the configuration and operation of the server for the developed application.
A recipient of the developed application (whether a test person/team or a customer) will then deploy the application on a server configured by the recipient. As can be expected, differences in server configuration between the developer's server and the recipient's server can result in bugs or other operational difficulties being identified.
As such, there is presently no known method to ensure that an application which has been deployed on a server will execute in the server environment (i.e., the server configuration) with which the application is known to operate as desired.
Additionally, as many applications are now typically developed in a team environment, a single developer may, after modifying some code, test the code by processing it on a team's server. However, if the server has be reconfigured (by, for example, another member of the development team), the modified code may not operate as expected. The developer may waste enormous amounts of time in identifying the problem which may be a result of the reconfiguration of the team server.
In a further shortcoming of the present application development and deployment environment is the difficulty experienced by application testing teams and application customers in identifying bugs or other causes for any operational difficulties experienced as a result of executing or processing the application. As indicated above, operational difficulties may be the result of coding errors (or bugs) or the configuration of the server upon which the application is operating. Accordingly, identifying the exact source of any problem can be time consuming.
Accordingly, a server configuration versioning tool which addresses, at least in part, some of these shortcomings is desired.
SUMMARY OF THE INVENTION
The present invention is directed to a server configuration versioning tool which addresses, at least in part, the various described shortcomings.
Embodiments of the invention enable a developer to associate a server configuration with an application or project. Additionally, embodiments of the invention may enable multiple versions of a server configuration (which in some embodiments are versioned separately from the associated application or project) to be stored.
Advantageously embodiments of the invention enable a developer to configure a server in accordance with versioned configuration data (often stored in one or more configuration files) which is known to have configured a server such that the server performs in a well understood manner. This advantageous feature enables a developer to more quickly identify the source of any problems which may have been introduced as a result of modifications made to the application being tested.
In a further advantage, an application can be transferred to another party (e.g., another developer, a test team, a customer, etc.) with associated server configuration data. As such, a developer can be reasonably assured of the configuration of server on which the application is to be executed or processed.
In a further advantage of the present invention, a developer, having been informed, by another party of operational problems of the application, can be assured that the other party's server is configured in a particular manner.
In a further advantage of the present invention, two parties (e.g., a developer and a tester, a developer and a customer, etc.) are more quickly able to ascertain the cause of operational problems due to their ability to more quickly and accurately reproduce the execution environment in which the application is operating.
Other advantages of embodiments of the present invention will be apparent to those of ordinary skill in the art.
In accordance with an aspect of the present invention there is provided a method for executing an application on a server, said method comprising: transferring to said server a package, said server for execution on a computer platform, said package comprising said application and server configuration data, said server configuration data comprising data to configure said server for said application; configuring said server with said server configuration data; and executing said server and said application.
In accordance with another aspect of the present invention there is provided a method of preparing an application said method comprising: packaging files composing said application with server configuration data, said server configuration data comprising one or more server configuration files, each of said one or more server configuration files adapted to configure a server to execute said application.
In accordance with still another aspect of the present invention there is provided A
versioning tool for performing a method of preparing an application said method comprising:
packaging files composing said application with server configuration data, said server configuration data comprising one or more server configuration files, each of said one or more server configuration files adapted to configure a server to execute said application.
In accordance with still another aspect of the present invention there is provided a method of versioning server configuration files, said method comprising: within a package comprising an application associating a version of a server configuration file with said application, said version of a server configuration file adapted to configure a server to process said application.
In accordance with still another aspect of the present invention there is provided a computer readable medium storing data and instructions, said data and instructions adapting a computer system to: transfer to said server a package, said server for execution on a computer platform, said package comprising said application and server configuration data, said server configuration data comprising data to configure said server for said application; configure said server with said server configuration data; and execute said server and said application.
Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.
BRIEF DESCRIPTION OF THE DRAWINGS
In the figures which illustrate an example embodiment of this invention:
FIG. 1 schematically illustrates a computer system embodying aspects of the invention;
FIG. 2 schematically illustrates, in greater detail, a portion of the computer system of FIG. 1;
FIG. 3 illustrates, in functional block form, a portion of FIG. 2; and FIG. 4 is a flowchart of exemplary operations of the computer system of FIG.
1.
DETAILED DESCRIPTION
An embodiment of the invention, computer system 100, is illustrated in FIG.1.
Computer system 100, illustrated for exemplary purposes as a networked computing device, is in communication with other networked computing devices (not shown) via network 110. As will be appreciated by those of ordinary skill in the art, network 110 may be embodied using conventional networking technologies and may include one or more of the following: local area networks, wide area networks, intranets, public Internet and the like. As is discussed with reference to FIG. 8, computer system 100 may interact with other networked computer systems (not shown) providing application analysis of a distributed application.
Throughout the description herein, an embodiment of the invention is illustrated with aspects of the invention embodied solely on computer system 100. As will be appreciated by those of ordinary skill in the art, aspects of the invention may be distributed amongst one or more networked computing devices which interact with computer system 100 via one or more data networks such as, for example, network 110. However, for ease of understanding, aspects of the invention have been embodied in a single computing device - computer system 100.
Computer system 100 includes processing system 102 which communicates with various input devices 104, output devices 106 and network 110. Input devices 104, two of which are shown, may include, for example, a keyboard, a mouse, a scanner, an imaging system (e.g., a camera, etc.) or the like. Similarly, output devices 106 (only one of which is illustrated) may include displays, information display unit printers and the like.
Additionally, combination input/output (I/O) devices may also be in communication with processing system 102. Examples of conventional I/O devices include removable and fixed recordable media (e.g., floppy disk drives, tape drives, CD-ROM drives, DVD-RW drives, etc.), touch screen displays and the like.
Exemplary processing system 102 is illustrated in greater detail in FIG. 2. As illustrated, processing system 102 includes several components - central processing unit (CPU) 202, memory 204, network interface (I/F) 208 and I/O I/F 210. Each component is in communication with the other components via a suitable communications bus 206 as required.
CPU 202 is a processing unit, such as an Intel PentiumT"", IBM PowerPCT"', Sun Microsystems UItraSparcT"' processor or the like, suitable for the operations described herein. As will be appreciated by those of ordinary skill in the art, other embodiments of processing system 102 could use alternative CPUs and may include embodiments in which one or more CPUs are employed. CPU 202 may include various support circuits to enable communication between itself and the other components of processing system 102.
Memory 204 includes both volatile and persistent memory for the storage of:
operational instructions for execution by CPU 202, data registers, application storage and the like. Memory 204 preferably includes a combination of random access memory (RAM), read only memory (ROM) and persistent memory such as that provided by a hard disk drive.
Network I/F 208 enables communication between computer system 100 and other network computing devices (not shown) via network 110. Network I/F 208 may be embodied in one or more conventional communication devices. Examples of a conventional communication device include an Ethernet card, a token ring card, a modem or the like.
Network I/F 208 may also enable the retrieval or transmission of instructions for execution by CPU
202 from or to a remote storage media or device via network 110.
I/O I/F 210 enables communication between processing system 102 and the various I/O
devices 104, 106. I/O I/F 210 may include, for example, a video card for interfacing with an external display such as output device 106. Additionally, I/O I/F 210 may enable communication between processing system 102 and a removable media 212. Although removable media 212 is illustrated as a conventional diskette other removable memory devices such as lipT"' drives, flash cards, CD-ROMs, static memory devices and the like may also be employed.
Removable media 212 may be used to provide instructions for execution by CPU 202 or as a removable data storage device.
The computer instructions/applications stored in memory 204 and executed by (thus adapting the operation of computer system 100 as described herein) are illustrated in functional block form in FIG. 3. As will be appreciated by those of ordinary skill in the art, the delineation between aspects of the applications illustrated as functional blocks in FIG. 3 is somewhat arbitrary as the various operations attributed to a particular application as described herein may, in alternative embodiments, be subsumed by another application.
As illustrated, for exemplary purposes only, memory 202 stores operating system (OS) 302, communications suite 304, development application 306, application behavior event and data logger 308, database 310 (storing data corresponding to the behavior of development application 306 and object model 314) and two application analysis tools 312A
and 312B.
OS 302 is an operating system suitable for operation with a selected CPU 202 and the operations described herein. Multitasking, multithreaded OSes such as, for example, IBM AIXT°', Microsoft Windows NTTM, Linux or the like, are expected in many embodiments to be preferred.
Communication suite 304 provides, through, interaction with OS 302 and network I/F
208 (FIG. 2), suitable communication protocols to enable communication with other networked computing devices via network 110 (FIG. 1 ). Communication suite 304 may include one or more of such protocols such as TCP/IP, ethernet, token ring and the like.
Integrated development environment (IDE) 306 enables the development of an application for eventual deployment on a server. The application can include many different components including (but not limited to), for example, servlets, EJBs, JSPs, HTML files, applets, source code, object code and the like. An exemplary IDE is provide by the IBM
product, VisualAge~ for JavaTM which enables a developers to create many of the exemplary components identified above. Competing and similar products are available from other companies such as Borland Inc., Microsoft Corp. and the like.
IDE 306 may also enable the creation of a project. A project may comprise one or more components. Additionally, IDE 306 may include debugging features, testing clients and many other tools needed by developers in the present day development environment.
IDE 306 may also include a file versioning tool which could be adapted to perform the functions described herein. For example, the IBM VisualAge product includes a feature identified as External Version Control which provides file versioning features. However, in the exemplary embodiment, IDE 306 is separate from the server configuration versioning tool (SCVT) 310 which is described in greater detail below. As will be appreciated by those of ordinary skill in the art upon reading the entire description, separation IDE
306 and SCVT 310 enables a user of an embodiment of the present invention to use an IDE 306 of their choosing and combine the selected IDE 306 with an SCVT 310 also of the user's choosing.
SCVT 310 provides a mechanism for associating one more server configuration files with a project, component, file or application or the like (hereinafter referred to collectively as an "application") under development. It will be appreciated that the term "server configuration file"
includes any format for server configuration data. Many servers are presently configured using one or more text files. However, a "server configuration file", as used herein, is not limited to this structure but, rather, refers, to any data which is used to configure a server for operation with a particular application, project or the like. Additionally, data for configuring a single server may, in fact, reside in several files. However, in the present description and for ease of understanding, all data, whether stored in a single or multiple files, for configuring a single server is referred to herein as a "server configuration file".
In addition to the foregoing functions, SCVT 310 provides for the versioning of each server configuration file associated with an application. The versioning of server configuration files, much like versioning of source code, provides an indicia (typically a timestamp or text) associated with a version of a selected server configuration file so that a user can place a particular version of server configuration file into context. For example, a first version of server configuration file may be associated with an indicia, such as the timestamp (e.g., May 1, 2001).
A second version of the same server configuration file may be associated with a second timestamp (e.g., June l, 2001). Accordingly, a developer testing changes to an application which previously operated properly using the May l, 2001 version of the server configuration file may choose to configure a server using that version rather than risk the possibility that the June 1, 2001 version of the server configuration file would induce some operational problems in the recently modified version of the application.
Additionally, SCVT 310 provides server configuration files associated with different server environments to be associated with a particular application. For example, an application may be developed which is designed to operate with a plurality of web servers (e.g., Tomcat and WebSphere). Accordingly, different server configurations are likely required in this exemplary instance. SCVT 310 provides a developer to store versions of server configuration files which are specific to the server (or other environment parameter). Accordingly and as explained in greater detail below, a developer, through the advantages provided by SCVT 310, can transfer an application with an associated configuration file to a recipient (e.g., a tester, a customer, another computer system, etc.) - the associated configuration file designed to ensure proper operation of the application on the server operated by the recipient.
In the exemplary embodiment described herein, SCVT 310 is embodied by conventional version control software adapted to perform the functions and operations described herein However, and as will be appreciated by those of ordinary skill in the art from the description contained herein, SCVT 310 could be embodied as a separate tool performing functions and operations described herein which do not form part of conventional version control software.
Application data 308 is data associated with the application under development. In many instances application data 308 will include source code, libraries and the like, known to those skilled in the art.
Server configuration file 312 comprises data (often in the form of one or more files) for configuring a server. As will be understood, a server configuration file 312 is often specific to the server, the environment in which the server is to operate (e.g., computer system related parameters) and the application which is to be processed by the server. Server configuration file 312 may be modified or created through use of, for example, a standard editor.
Other tools (e.g., configuration wizards, etc.) for the editing or modification of server configuration file 312 may also be employed. As alluded to above, a change in an application may require modification of an associated server configuration file 312. Accordingly, it is to be expected that a server configuration file 312 associated with a particular application which is undergoing development is likely to require modification as development progresses.
Version data repository 314 stores both application data 308 and server configuration data 312. Additionally, version data repository 314 also stores metadata relating to application data 308 and server configuration data 312. Repository 314 may be embodied, for example, in a conventional relational database or a proprietary data storage format.
The metadata may include (but is not limited to), for example, data describing a particular file or component (e.g., text data), version data (e.g., a version number or version text descriptor), timestamp data, indicator data indicating whether a piece of data (e.g., a file) has been checked out (and if so, by whom) and the like. In the exemplary embodiment, the metadata also includes association data which associates application data 308 with one or more server configuration files which form part of server configuration data 312. This association data may be in the form of, for example, a relation or linking between a one or more server configuration files and corresponding application data.
The linkage or association between an application and a single instance of a server configuration file is, in the exemplary embodiment, maintained within the server configuration file itself. That is, part of the configuration of a server is the list of applications that are installed on that server, and that list can be used within the development environment to make the linkage clear to the user and to the server which is configured by the server configuration file. In the exemplary embodiment, the association between the different versions of an application and the different versions of a server configuration file is typically managed by SCVT
310. For example, version 1.3 of the application may be associated with version 1.0 of a server configuration file, while version 2.0 of an application may be associated with version 2.7 of the server configuration file.
In an alternative embodiment, the linkage or association between an application and one or more server configuration files could be embedded within the application itself.
The operation of computer system 100 (FIG. 1) and, more particularly, the operation and interaction of IDE 306, SCVT 310, application data 308 with server configuration data 312 is better understood with reference to operations 400, performed by these various components of computer system 100, which is illustrated in flowchart form in fIG. 4.
Initially, in operations 400, a user will provide to computer system 100, and more particularly SCVT 310, a server configuration file which has been newly created or recently modified (5402). The server configuration file may have been created using known tools (e.g., an editor or the like) or checked out or otherwise previously retrieved from application data repository 314. SCVT 310 may be provided with server configuration file in different manners.
For example, if SCVT 310 provides a command line interface, a server configuration file may be provided by file name (or other indicia) in conjunction with an executable representing SCVT
310. Alternatively, if SCVT 310 provides a graphical user interface (which is common in many environments), SCVT 310 may be provided with a file name (or other indicia) through various inputs (e.g., keystrokes, mouse clicks, voice control, etc.). In a future alternative, SCVT 310 may be provided with the server configuration file by providing a suitable application programming interface. In this latter alternative, SCVT 310 may be called by another program (rather than by a user).
The received server configuration file, which forms server configuration data 312, is stored in data repository 314. Additionally, SCVT 310 receives additional data associated with the server configuration file received in 5402. This additional configuration data received forms part of the metadata described above. This may include textual description data (e.g., "Configuration File for Tomcat Server", "Prepared by Tim Francis", etc.), timestamp data, version identifying data (e.g., "WebSphere Configuration File, Version 1.6", etc.), or the like.
In addition to the foregoing metadata, SCVT 310 receives application association data (S404). Application association data associates a particular server configuration file (or a version thereof) with a particular application (or version thereof). As will be appreciated, a particular server configuration file (or version thereof) may be associated with one or more applications (or versions thereof) and/or one or versions of an application. Similarly, a particular application (or version thereof) may be associated with one or more server configurations (or versions thereof).
Additionally, neither an application (or version thereof) or server configuration file (or version thereof) need be associated with the other. That is, for example, a server configuration file could be stored in repository 314. However, additional benefits are achieved by SCVT
310 when association data is received.
The association data, once received by SCVT 310, is also stored in repository 314. The examples described above suggest explicit association data being received by SCVT 310.
However, in an alternative embodiment, the association data may be implicit.
For example, in an IDE, a developer may include a server configuration file as part of a project.
In this instance, the association data received by SCVT 310 results from the storage and packaging of the entire project including the server configuration file. The association between the application which forms part of the project and a server configuration file, which also form part of the same project, results in this implicit association.
In a further operation, 5406, SCVT 310 receives data to select one or more server configuration files (stored within repository 314) and the particular versions thereof. This data is then used during the building or compiling of an application which is to be transferred. As a result of operation S406 an application and one or more versions of server configuration files are bundled to form a single package. For example, an application may be associated with configuration files for two different servers (e.g., a WebSphere web server and a Tomcat web server). Each web server may be deployed on several different platforms (a platform being a combination of the underlying physical hardware and the operating system executing thereon).
Accordingly, a package for an application may select the latest version of server configuration files for each web server for all supported platforms. In an exemplary situation of six platforms being supported for both web servers, twelve different configuration files may be packaged with an application so that each possible combination can be easily supported. The package thus formed can then be stored on a medium for transfer (e.g., a network accessible drive, CD-ROMs, DVD-ROMs, etc.) The package formed in 5406 can then be transferred to another party (e.g., a test team, a customer, another computer system, etc.) When a package is accessed (by a user, for example), a selection of one or more configuration files bundled therein may then be made. For example, a user having a specific platform (e.g., a Linux operating system on an IBM iSeriesTM server) running IBM WebSphere web server, and attempting to install and execute an application which has been packaged (as described above) and transferred (by CD-ROM, Internet connection, etc.) to the user, may select one of the configuration files contained within the package. The selected configuration file will, having been designed to operate on the user specific platform and with the associated application contained within the package, in most instances operate as designed by the development team.
From the foregoing, persons of ordinary skill in the art will appreciate that embodiments of the present invention enable a developer to associate a server configuration with an application or project. Additionally, embodiments of the invention may enable multiple versions of a server configuration (which in some embodiments are versioned separately from the associated application or project) to be stored.
In a further advantage, embodiments of the invention enable a developer to configure a server in accordance with versioned configuration data (often stored in one or more configuration files) which is known to have configured a server such that the server performs in a well understood manner. This advantageous feature enables a developer to more quickly identify the source of any problems which may have been introduced as a result of modifications made to the application being tested.
In a further advantage, an application can be transferred to another party (e.g., another developer, a test team, a customer, etc.) with associated server configuration data. As such, a developer can be reasonably assured of the configuration of server on which the application is to be executed or processed.
In a further advantage of the present invention, a developer, having been informed, by another party of operational problems of the application, can be assured that the other party's server is configured in a particular manner.
In a further advantage of the present invention, two parties (e.g., a developer and a tester, a developer and a customer, etc.) are more quickly able to ascertain the cause of operational problems due to their ability to more quickly and accurately reproduce the execution environment in which the application is operating.
Other advantages of embodiments of the present invention will be apparent to those of ordinary skill in the art.
As will be appreciated by those skilled in the art, modifications to the above-described embodiment can be made without departing from the essence of the invention While one (or more) embodiments) of this invention has been illustrated in the accompanying drawings and described above, it will be evident to those skilled in the art that changes and modifications may be made therein without departing from the essence of this invention. All such modifications or variations are believed to be within the sphere and scope of the invention as defined by the claims appended hereto. Other modifications will be apparent to those skilled in the art and, therefore, the invention is defined in the claims.
FIELD OF THE INVENTION
The present invention relates to configuration of servers and, more particularly, to a server configuration versioning tool.
BACKGROUND OF THE INVENTION
Computer servers are widely used in many computer installations. A computer server, forming part of a network of computer servers (hereinafter "servers") and computer clients (hereinafter "clients"), will receive requests for data, provide a wide variety of data processing services and transmit data to clients and other servers.
Servers, operating or being deployed on a computer system, provide a multitude of functions and services to other servers and other computer clients. A computer system may operate to act as a single server or may enable a number of servers to operate, independently.
Some well known types of servers include, for example, print servers (which provide printing services to other servers and/or clients), web servers (which provide web page services to connected computers), file servers (which provide file access and file storage services), application servers (which may provide business logic or application delivery services), database servers (which provide for the storage of databases and/or database management services) as well as many others.
Generically, a server will enable another computer (whether another server or a client) to process (e.g., running or execution, storage, handling, etc.) user code. User code can be any type of data such as executable code, applications, files, databases and the like.
As will be understood by those of ordinary skill in the art, there numerous type of environments in which a server may be deployed. Examples ofd different operating environment variables which may affect the operation of a server include: whether a server may be one of many servers operating on a single computer system; the location in the network of a server; the location of files on the computer system or the network; the operating system being employed on the computer system in which the server is deployed; the user code the server is to process; as well as many parameters and variables. In order to reflect the variety of environments in which a server may be deployed, a server is typically configured in order to operate properly on the computer system on which the server will be deployed (i.e., located and executed).
As is known to those skilled in the art, the proper operation of an application which is to processed or executed by a server depends on the configuration of the processing server. That is, an application may be designed to operate on a particular server (e.g., a Tomcat or WebSphere"
web server) provided that particular server is properly configured. A server, otherwise capable of processing or executing an application, may, when improperly configured, fail to properly process the application.
In the present development environment, applications are developed in the development environment where the application is coded and then tested (with these steps being repeated as necessary) until an application is deemed to be ready for deployment in a customer or operating setting. Also during the development phase the application, a developer typically will "version"
the application using version control software. That is, the developer will store the various components (e.g., source code files, object code, EJBs, JSPs, etc.) in a repository (e.g., a database) which allows for the application (or a portion thereof] at a specified point in time to be saved. The version control software provides for the automated management solution for controlling, maintaining and tracking software development. Versioning control software (also known as source control management - SCM) typically enables files to be "checked out" and "checked in". Thus, when an application is being developed by a team of developers, the versioning control software will allow different versions of the application to be saved and retrieved. SCM software, in some instances, will also allow multiple changes to be made concurrently by different developers, and then merged correctly. Other features of versioning control software are known to those skilled in the art.
As an application progresses through the development process, an application developer may test the application-under-development on a server configured by the developer or another member of the team to which the developer belongs.
As a result of this present application development environment, application developers are focussed on the various artifacts (e.g., Enterprise Java Beans - EJBs, servlets, JavaServer Pages - JSPs, HTML files, etc.) that form the application and are not, generally, concerned with the server side operation and configuration.
After (many) modifications due to developer based testing, an application may be transferred to a person or team dedicated to testing or licensed to a customer. The deployment setting then involves the configuration and operation of the server for the developed application.
A recipient of the developed application (whether a test person/team or a customer) will then deploy the application on a server configured by the recipient. As can be expected, differences in server configuration between the developer's server and the recipient's server can result in bugs or other operational difficulties being identified.
As such, there is presently no known method to ensure that an application which has been deployed on a server will execute in the server environment (i.e., the server configuration) with which the application is known to operate as desired.
Additionally, as many applications are now typically developed in a team environment, a single developer may, after modifying some code, test the code by processing it on a team's server. However, if the server has be reconfigured (by, for example, another member of the development team), the modified code may not operate as expected. The developer may waste enormous amounts of time in identifying the problem which may be a result of the reconfiguration of the team server.
In a further shortcoming of the present application development and deployment environment is the difficulty experienced by application testing teams and application customers in identifying bugs or other causes for any operational difficulties experienced as a result of executing or processing the application. As indicated above, operational difficulties may be the result of coding errors (or bugs) or the configuration of the server upon which the application is operating. Accordingly, identifying the exact source of any problem can be time consuming.
Accordingly, a server configuration versioning tool which addresses, at least in part, some of these shortcomings is desired.
SUMMARY OF THE INVENTION
The present invention is directed to a server configuration versioning tool which addresses, at least in part, the various described shortcomings.
Embodiments of the invention enable a developer to associate a server configuration with an application or project. Additionally, embodiments of the invention may enable multiple versions of a server configuration (which in some embodiments are versioned separately from the associated application or project) to be stored.
Advantageously embodiments of the invention enable a developer to configure a server in accordance with versioned configuration data (often stored in one or more configuration files) which is known to have configured a server such that the server performs in a well understood manner. This advantageous feature enables a developer to more quickly identify the source of any problems which may have been introduced as a result of modifications made to the application being tested.
In a further advantage, an application can be transferred to another party (e.g., another developer, a test team, a customer, etc.) with associated server configuration data. As such, a developer can be reasonably assured of the configuration of server on which the application is to be executed or processed.
In a further advantage of the present invention, a developer, having been informed, by another party of operational problems of the application, can be assured that the other party's server is configured in a particular manner.
In a further advantage of the present invention, two parties (e.g., a developer and a tester, a developer and a customer, etc.) are more quickly able to ascertain the cause of operational problems due to their ability to more quickly and accurately reproduce the execution environment in which the application is operating.
Other advantages of embodiments of the present invention will be apparent to those of ordinary skill in the art.
In accordance with an aspect of the present invention there is provided a method for executing an application on a server, said method comprising: transferring to said server a package, said server for execution on a computer platform, said package comprising said application and server configuration data, said server configuration data comprising data to configure said server for said application; configuring said server with said server configuration data; and executing said server and said application.
In accordance with another aspect of the present invention there is provided a method of preparing an application said method comprising: packaging files composing said application with server configuration data, said server configuration data comprising one or more server configuration files, each of said one or more server configuration files adapted to configure a server to execute said application.
In accordance with still another aspect of the present invention there is provided A
versioning tool for performing a method of preparing an application said method comprising:
packaging files composing said application with server configuration data, said server configuration data comprising one or more server configuration files, each of said one or more server configuration files adapted to configure a server to execute said application.
In accordance with still another aspect of the present invention there is provided a method of versioning server configuration files, said method comprising: within a package comprising an application associating a version of a server configuration file with said application, said version of a server configuration file adapted to configure a server to process said application.
In accordance with still another aspect of the present invention there is provided a computer readable medium storing data and instructions, said data and instructions adapting a computer system to: transfer to said server a package, said server for execution on a computer platform, said package comprising said application and server configuration data, said server configuration data comprising data to configure said server for said application; configure said server with said server configuration data; and execute said server and said application.
Other aspects and features of the present invention will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments of the invention in conjunction with the accompanying figures.
BRIEF DESCRIPTION OF THE DRAWINGS
In the figures which illustrate an example embodiment of this invention:
FIG. 1 schematically illustrates a computer system embodying aspects of the invention;
FIG. 2 schematically illustrates, in greater detail, a portion of the computer system of FIG. 1;
FIG. 3 illustrates, in functional block form, a portion of FIG. 2; and FIG. 4 is a flowchart of exemplary operations of the computer system of FIG.
1.
DETAILED DESCRIPTION
An embodiment of the invention, computer system 100, is illustrated in FIG.1.
Computer system 100, illustrated for exemplary purposes as a networked computing device, is in communication with other networked computing devices (not shown) via network 110. As will be appreciated by those of ordinary skill in the art, network 110 may be embodied using conventional networking technologies and may include one or more of the following: local area networks, wide area networks, intranets, public Internet and the like. As is discussed with reference to FIG. 8, computer system 100 may interact with other networked computer systems (not shown) providing application analysis of a distributed application.
Throughout the description herein, an embodiment of the invention is illustrated with aspects of the invention embodied solely on computer system 100. As will be appreciated by those of ordinary skill in the art, aspects of the invention may be distributed amongst one or more networked computing devices which interact with computer system 100 via one or more data networks such as, for example, network 110. However, for ease of understanding, aspects of the invention have been embodied in a single computing device - computer system 100.
Computer system 100 includes processing system 102 which communicates with various input devices 104, output devices 106 and network 110. Input devices 104, two of which are shown, may include, for example, a keyboard, a mouse, a scanner, an imaging system (e.g., a camera, etc.) or the like. Similarly, output devices 106 (only one of which is illustrated) may include displays, information display unit printers and the like.
Additionally, combination input/output (I/O) devices may also be in communication with processing system 102. Examples of conventional I/O devices include removable and fixed recordable media (e.g., floppy disk drives, tape drives, CD-ROM drives, DVD-RW drives, etc.), touch screen displays and the like.
Exemplary processing system 102 is illustrated in greater detail in FIG. 2. As illustrated, processing system 102 includes several components - central processing unit (CPU) 202, memory 204, network interface (I/F) 208 and I/O I/F 210. Each component is in communication with the other components via a suitable communications bus 206 as required.
CPU 202 is a processing unit, such as an Intel PentiumT"", IBM PowerPCT"', Sun Microsystems UItraSparcT"' processor or the like, suitable for the operations described herein. As will be appreciated by those of ordinary skill in the art, other embodiments of processing system 102 could use alternative CPUs and may include embodiments in which one or more CPUs are employed. CPU 202 may include various support circuits to enable communication between itself and the other components of processing system 102.
Memory 204 includes both volatile and persistent memory for the storage of:
operational instructions for execution by CPU 202, data registers, application storage and the like. Memory 204 preferably includes a combination of random access memory (RAM), read only memory (ROM) and persistent memory such as that provided by a hard disk drive.
Network I/F 208 enables communication between computer system 100 and other network computing devices (not shown) via network 110. Network I/F 208 may be embodied in one or more conventional communication devices. Examples of a conventional communication device include an Ethernet card, a token ring card, a modem or the like.
Network I/F 208 may also enable the retrieval or transmission of instructions for execution by CPU
202 from or to a remote storage media or device via network 110.
I/O I/F 210 enables communication between processing system 102 and the various I/O
devices 104, 106. I/O I/F 210 may include, for example, a video card for interfacing with an external display such as output device 106. Additionally, I/O I/F 210 may enable communication between processing system 102 and a removable media 212. Although removable media 212 is illustrated as a conventional diskette other removable memory devices such as lipT"' drives, flash cards, CD-ROMs, static memory devices and the like may also be employed.
Removable media 212 may be used to provide instructions for execution by CPU 202 or as a removable data storage device.
The computer instructions/applications stored in memory 204 and executed by (thus adapting the operation of computer system 100 as described herein) are illustrated in functional block form in FIG. 3. As will be appreciated by those of ordinary skill in the art, the delineation between aspects of the applications illustrated as functional blocks in FIG. 3 is somewhat arbitrary as the various operations attributed to a particular application as described herein may, in alternative embodiments, be subsumed by another application.
As illustrated, for exemplary purposes only, memory 202 stores operating system (OS) 302, communications suite 304, development application 306, application behavior event and data logger 308, database 310 (storing data corresponding to the behavior of development application 306 and object model 314) and two application analysis tools 312A
and 312B.
OS 302 is an operating system suitable for operation with a selected CPU 202 and the operations described herein. Multitasking, multithreaded OSes such as, for example, IBM AIXT°', Microsoft Windows NTTM, Linux or the like, are expected in many embodiments to be preferred.
Communication suite 304 provides, through, interaction with OS 302 and network I/F
208 (FIG. 2), suitable communication protocols to enable communication with other networked computing devices via network 110 (FIG. 1 ). Communication suite 304 may include one or more of such protocols such as TCP/IP, ethernet, token ring and the like.
Integrated development environment (IDE) 306 enables the development of an application for eventual deployment on a server. The application can include many different components including (but not limited to), for example, servlets, EJBs, JSPs, HTML files, applets, source code, object code and the like. An exemplary IDE is provide by the IBM
product, VisualAge~ for JavaTM which enables a developers to create many of the exemplary components identified above. Competing and similar products are available from other companies such as Borland Inc., Microsoft Corp. and the like.
IDE 306 may also enable the creation of a project. A project may comprise one or more components. Additionally, IDE 306 may include debugging features, testing clients and many other tools needed by developers in the present day development environment.
IDE 306 may also include a file versioning tool which could be adapted to perform the functions described herein. For example, the IBM VisualAge product includes a feature identified as External Version Control which provides file versioning features. However, in the exemplary embodiment, IDE 306 is separate from the server configuration versioning tool (SCVT) 310 which is described in greater detail below. As will be appreciated by those of ordinary skill in the art upon reading the entire description, separation IDE
306 and SCVT 310 enables a user of an embodiment of the present invention to use an IDE 306 of their choosing and combine the selected IDE 306 with an SCVT 310 also of the user's choosing.
SCVT 310 provides a mechanism for associating one more server configuration files with a project, component, file or application or the like (hereinafter referred to collectively as an "application") under development. It will be appreciated that the term "server configuration file"
includes any format for server configuration data. Many servers are presently configured using one or more text files. However, a "server configuration file", as used herein, is not limited to this structure but, rather, refers, to any data which is used to configure a server for operation with a particular application, project or the like. Additionally, data for configuring a single server may, in fact, reside in several files. However, in the present description and for ease of understanding, all data, whether stored in a single or multiple files, for configuring a single server is referred to herein as a "server configuration file".
In addition to the foregoing functions, SCVT 310 provides for the versioning of each server configuration file associated with an application. The versioning of server configuration files, much like versioning of source code, provides an indicia (typically a timestamp or text) associated with a version of a selected server configuration file so that a user can place a particular version of server configuration file into context. For example, a first version of server configuration file may be associated with an indicia, such as the timestamp (e.g., May 1, 2001).
A second version of the same server configuration file may be associated with a second timestamp (e.g., June l, 2001). Accordingly, a developer testing changes to an application which previously operated properly using the May l, 2001 version of the server configuration file may choose to configure a server using that version rather than risk the possibility that the June 1, 2001 version of the server configuration file would induce some operational problems in the recently modified version of the application.
Additionally, SCVT 310 provides server configuration files associated with different server environments to be associated with a particular application. For example, an application may be developed which is designed to operate with a plurality of web servers (e.g., Tomcat and WebSphere). Accordingly, different server configurations are likely required in this exemplary instance. SCVT 310 provides a developer to store versions of server configuration files which are specific to the server (or other environment parameter). Accordingly and as explained in greater detail below, a developer, through the advantages provided by SCVT 310, can transfer an application with an associated configuration file to a recipient (e.g., a tester, a customer, another computer system, etc.) - the associated configuration file designed to ensure proper operation of the application on the server operated by the recipient.
In the exemplary embodiment described herein, SCVT 310 is embodied by conventional version control software adapted to perform the functions and operations described herein However, and as will be appreciated by those of ordinary skill in the art from the description contained herein, SCVT 310 could be embodied as a separate tool performing functions and operations described herein which do not form part of conventional version control software.
Application data 308 is data associated with the application under development. In many instances application data 308 will include source code, libraries and the like, known to those skilled in the art.
Server configuration file 312 comprises data (often in the form of one or more files) for configuring a server. As will be understood, a server configuration file 312 is often specific to the server, the environment in which the server is to operate (e.g., computer system related parameters) and the application which is to be processed by the server. Server configuration file 312 may be modified or created through use of, for example, a standard editor.
Other tools (e.g., configuration wizards, etc.) for the editing or modification of server configuration file 312 may also be employed. As alluded to above, a change in an application may require modification of an associated server configuration file 312. Accordingly, it is to be expected that a server configuration file 312 associated with a particular application which is undergoing development is likely to require modification as development progresses.
Version data repository 314 stores both application data 308 and server configuration data 312. Additionally, version data repository 314 also stores metadata relating to application data 308 and server configuration data 312. Repository 314 may be embodied, for example, in a conventional relational database or a proprietary data storage format.
The metadata may include (but is not limited to), for example, data describing a particular file or component (e.g., text data), version data (e.g., a version number or version text descriptor), timestamp data, indicator data indicating whether a piece of data (e.g., a file) has been checked out (and if so, by whom) and the like. In the exemplary embodiment, the metadata also includes association data which associates application data 308 with one or more server configuration files which form part of server configuration data 312. This association data may be in the form of, for example, a relation or linking between a one or more server configuration files and corresponding application data.
The linkage or association between an application and a single instance of a server configuration file is, in the exemplary embodiment, maintained within the server configuration file itself. That is, part of the configuration of a server is the list of applications that are installed on that server, and that list can be used within the development environment to make the linkage clear to the user and to the server which is configured by the server configuration file. In the exemplary embodiment, the association between the different versions of an application and the different versions of a server configuration file is typically managed by SCVT
310. For example, version 1.3 of the application may be associated with version 1.0 of a server configuration file, while version 2.0 of an application may be associated with version 2.7 of the server configuration file.
In an alternative embodiment, the linkage or association between an application and one or more server configuration files could be embedded within the application itself.
The operation of computer system 100 (FIG. 1) and, more particularly, the operation and interaction of IDE 306, SCVT 310, application data 308 with server configuration data 312 is better understood with reference to operations 400, performed by these various components of computer system 100, which is illustrated in flowchart form in fIG. 4.
Initially, in operations 400, a user will provide to computer system 100, and more particularly SCVT 310, a server configuration file which has been newly created or recently modified (5402). The server configuration file may have been created using known tools (e.g., an editor or the like) or checked out or otherwise previously retrieved from application data repository 314. SCVT 310 may be provided with server configuration file in different manners.
For example, if SCVT 310 provides a command line interface, a server configuration file may be provided by file name (or other indicia) in conjunction with an executable representing SCVT
310. Alternatively, if SCVT 310 provides a graphical user interface (which is common in many environments), SCVT 310 may be provided with a file name (or other indicia) through various inputs (e.g., keystrokes, mouse clicks, voice control, etc.). In a future alternative, SCVT 310 may be provided with the server configuration file by providing a suitable application programming interface. In this latter alternative, SCVT 310 may be called by another program (rather than by a user).
The received server configuration file, which forms server configuration data 312, is stored in data repository 314. Additionally, SCVT 310 receives additional data associated with the server configuration file received in 5402. This additional configuration data received forms part of the metadata described above. This may include textual description data (e.g., "Configuration File for Tomcat Server", "Prepared by Tim Francis", etc.), timestamp data, version identifying data (e.g., "WebSphere Configuration File, Version 1.6", etc.), or the like.
In addition to the foregoing metadata, SCVT 310 receives application association data (S404). Application association data associates a particular server configuration file (or a version thereof) with a particular application (or version thereof). As will be appreciated, a particular server configuration file (or version thereof) may be associated with one or more applications (or versions thereof) and/or one or versions of an application. Similarly, a particular application (or version thereof) may be associated with one or more server configurations (or versions thereof).
Additionally, neither an application (or version thereof) or server configuration file (or version thereof) need be associated with the other. That is, for example, a server configuration file could be stored in repository 314. However, additional benefits are achieved by SCVT
310 when association data is received.
The association data, once received by SCVT 310, is also stored in repository 314. The examples described above suggest explicit association data being received by SCVT 310.
However, in an alternative embodiment, the association data may be implicit.
For example, in an IDE, a developer may include a server configuration file as part of a project.
In this instance, the association data received by SCVT 310 results from the storage and packaging of the entire project including the server configuration file. The association between the application which forms part of the project and a server configuration file, which also form part of the same project, results in this implicit association.
In a further operation, 5406, SCVT 310 receives data to select one or more server configuration files (stored within repository 314) and the particular versions thereof. This data is then used during the building or compiling of an application which is to be transferred. As a result of operation S406 an application and one or more versions of server configuration files are bundled to form a single package. For example, an application may be associated with configuration files for two different servers (e.g., a WebSphere web server and a Tomcat web server). Each web server may be deployed on several different platforms (a platform being a combination of the underlying physical hardware and the operating system executing thereon).
Accordingly, a package for an application may select the latest version of server configuration files for each web server for all supported platforms. In an exemplary situation of six platforms being supported for both web servers, twelve different configuration files may be packaged with an application so that each possible combination can be easily supported. The package thus formed can then be stored on a medium for transfer (e.g., a network accessible drive, CD-ROMs, DVD-ROMs, etc.) The package formed in 5406 can then be transferred to another party (e.g., a test team, a customer, another computer system, etc.) When a package is accessed (by a user, for example), a selection of one or more configuration files bundled therein may then be made. For example, a user having a specific platform (e.g., a Linux operating system on an IBM iSeriesTM server) running IBM WebSphere web server, and attempting to install and execute an application which has been packaged (as described above) and transferred (by CD-ROM, Internet connection, etc.) to the user, may select one of the configuration files contained within the package. The selected configuration file will, having been designed to operate on the user specific platform and with the associated application contained within the package, in most instances operate as designed by the development team.
From the foregoing, persons of ordinary skill in the art will appreciate that embodiments of the present invention enable a developer to associate a server configuration with an application or project. Additionally, embodiments of the invention may enable multiple versions of a server configuration (which in some embodiments are versioned separately from the associated application or project) to be stored.
In a further advantage, embodiments of the invention enable a developer to configure a server in accordance with versioned configuration data (often stored in one or more configuration files) which is known to have configured a server such that the server performs in a well understood manner. This advantageous feature enables a developer to more quickly identify the source of any problems which may have been introduced as a result of modifications made to the application being tested.
In a further advantage, an application can be transferred to another party (e.g., another developer, a test team, a customer, etc.) with associated server configuration data. As such, a developer can be reasonably assured of the configuration of server on which the application is to be executed or processed.
In a further advantage of the present invention, a developer, having been informed, by another party of operational problems of the application, can be assured that the other party's server is configured in a particular manner.
In a further advantage of the present invention, two parties (e.g., a developer and a tester, a developer and a customer, etc.) are more quickly able to ascertain the cause of operational problems due to their ability to more quickly and accurately reproduce the execution environment in which the application is operating.
Other advantages of embodiments of the present invention will be apparent to those of ordinary skill in the art.
As will be appreciated by those skilled in the art, modifications to the above-described embodiment can be made without departing from the essence of the invention While one (or more) embodiments) of this invention has been illustrated in the accompanying drawings and described above, it will be evident to those skilled in the art that changes and modifications may be made therein without departing from the essence of this invention. All such modifications or variations are believed to be within the sphere and scope of the invention as defined by the claims appended hereto. Other modifications will be apparent to those skilled in the art and, therefore, the invention is defined in the claims.
Claims (25)
1. A method for executing an application on a server, said method comprising:
transferring to said server a package, said server for execution on a computer platform, said package comprising said application and server configuration data, said server configuration data comprising data to configure said server for said application;
configuring said server with said server configuration data; and executing said server and said application.
transferring to said server a package, said server for execution on a computer platform, said package comprising said application and server configuration data, said server configuration data comprising data to configure said server for said application;
configuring said server with said server configuration data; and executing said server and said application.
2. The method of claim 1 wherein said server configuration data comprises one or more server configuration files;
and wherein configuring comprises:
selecting one of said one or more server configuration files; said selected one adapted to configure said server; and configuring said server with said selected one of said one or more server configuration files.
and wherein configuring comprises:
selecting one of said one or more server configuration files; said selected one adapted to configure said server; and configuring said server with said selected one of said one or more server configuration files.
3. The method of claim 2 wherein some of said one or more server configuration files comprise versions of one server configuration file.
4. The method of claim 3 wherein each of said versions of said one server configuration file comprises data associating said each of said versions with a version of said application.
5. The method of claim 3 wherein said application comprises data associating said application with at least one of said versions of said one or more server configuration files.
6. The method of claim 2 wherein at least one of said one or more server configuration files comprises a first server configuration file adapted to configure a first server and wherein another of said one or more server configuration files comprises a second server configuration file adapted to configure a second server.
7. The method of claim 2 wherein at least one of said one or more server configuration files comprises a first server configuration file adapted to configure a first server for execution on a first computer system platform and wherein another of said one or more server configuration files comprises a second server configuration file adapted to configure said first server for execution on a second computer system platform.
8. A method of preparing an application said method comprising:
packaging files composing said application with server configuration data, said server configuration data comprising one or more server configuration files, each of said one or more server configuration files adapted to configure a server to execute said application.
packaging files composing said application with server configuration data, said server configuration data comprising one or more server configuration files, each of said one or more server configuration files adapted to configure a server to execute said application.
9. The method of claim 8 wherein said server configuration data comprises one or more server configuration files;
and wherein configuring comprises:
selecting one of said one or more server configuration files; said selected one adapted to configure said server; and configuring said server with said selected one of said one or more server configuration files.
and wherein configuring comprises:
selecting one of said one or more server configuration files; said selected one adapted to configure said server; and configuring said server with said selected one of said one or more server configuration files.
10. The method of claim 9 wherein some of said one or more server configuration files comprise versions of one server configuration file.
11. The method of claim 10 wherein each of said versions of said one server configuration file comprises data associating said each of said versions with a version of said application.
12. The method of claim 10 wherein said application comprises data associating said application with at least one of said versions of said one or more server configuration files.
13. The method of claim 9 wherein at least one of said one or more server configuration files comprises a first server configuration file adapted to configure a first server and wherein another of said one or more server configuration files comprises a second server configuration file adapted to configure a second server.
14. The method of claim 9 wherein at least one of said one or more server configuration files comprises a first server configuration file adapted to configure a first server for execution on a first computer system platform and wherein another of said one or more server configuration files comprises a second server configuration file adapted to configure said first server for execution on a second computer system platform.
15. A versioning tool for performing the method of claim 8, 9, 10, 11, 12, 13 or 14.
16. A method of versioning server configuration files, said method comprising:
within a package comprising an application associating a version of a server configuration file with said application, said version of a server configuration file adapted to configure a server to process said application.
within a package comprising an application associating a version of a server configuration file with said application, said version of a server configuration file adapted to configure a server to process said application.
17. The method of claim 16 wherein said associating comprises embedding association data within said version of said server configuration file linking said version of said server configuration file with said application.
18. The method of claim 16 wherein said associating comprises embedding association data with said application linking said application with at least one of said plurality of versions of said server configuration file.
19. The method of claim 17 wherein said package further comprises said version of said server configuration file.
20. A computer readable medium storing data and instructions, said data and instructions adapting a computer system to:
transfer to said server a package, said server for execution on a computer platform, said package comprising said application and server configuration data, said server configuration data comprising data to configure said server for said application;
configure said server with said server configuration data; and execute said server and said application.
transfer to said server a package, said server for execution on a computer platform, said package comprising said application and server configuration data, said server configuration data comprising data to configure said server for said application;
configure said server with said server configuration data; and execute said server and said application.
21. The computer readable medium of claim 20 wherein said server configuration data comprises one or more server configuration files;
and wherein said adaptation to configure comprises adapting said computer system to:
select one of said one or more server configuration files; said selected one adapted to configure said server; and configure said server with said selected one of said one or more server configuration files.
and wherein said adaptation to configure comprises adapting said computer system to:
select one of said one or more server configuration files; said selected one adapted to configure said server; and configure said server with said selected one of said one or more server configuration files.
22. The computer readable medium of claim 21 wherein some of said one or more server configuration files comprise versions of one server configuration file.
23. The computer readable medium of claim 22 wherein each of said versions of said one server configuration file comprises data associating said each of said versions with a version of said application.
24. The computer readable medium of claim 22 wherein said application comprises data associating said application with at least one of said versions of said one or more server configuration files.
25. The computer readable medium of claim 21 wherein at least one of said one or more server configuration files comprises a first server configuration file adapted to configure a first server and wherein another of said one or more server configuration files comprises a second server configuration file adapted to configure a second server.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA002349654A CA2349654A1 (en) | 2001-06-04 | 2001-06-04 | Server configuration versioning tool |
US10/064,011 US20030005093A1 (en) | 2001-06-04 | 2002-06-04 | Server configuration versioning tool |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA002349654A CA2349654A1 (en) | 2001-06-04 | 2001-06-04 | Server configuration versioning tool |
Publications (1)
Publication Number | Publication Date |
---|---|
CA2349654A1 true CA2349654A1 (en) | 2002-12-04 |
Family
ID=4169196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002349654A Abandoned CA2349654A1 (en) | 2001-06-04 | 2001-06-04 | Server configuration versioning tool |
Country Status (2)
Country | Link |
---|---|
US (1) | US20030005093A1 (en) |
CA (1) | CA2349654A1 (en) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8073935B2 (en) * | 2002-07-25 | 2011-12-06 | Oracle America, Inc. | Pluggable semantic verification and validation of configuration data |
US7730112B2 (en) * | 2004-05-10 | 2010-06-01 | Bea Systems Inc. | Scoped applications |
US7428733B2 (en) * | 2004-05-13 | 2008-09-23 | Bea Systems, Inc. | System and method for custom module creation and deployment |
US7814484B2 (en) * | 2004-05-14 | 2010-10-12 | Bea Systems, Inc. | System and method for web application extensibility |
US7707572B2 (en) * | 2004-05-19 | 2010-04-27 | Bea Systems, Inc. | System and method for application container architecture |
US7539943B2 (en) * | 2004-07-14 | 2009-05-26 | Microsoft Corporation | Systems and methods for tracking file modifications in software development |
US8407206B2 (en) * | 2005-05-16 | 2013-03-26 | Microsoft Corporation | Storing results related to requests for software development services |
US8539604B2 (en) * | 2005-08-03 | 2013-09-17 | International Business Machines Corporation | Method, system and program product for versioning access control settings |
US9888092B2 (en) * | 2008-04-28 | 2018-02-06 | Oracle International Corporation | System and method for executing third party module with web servers |
US8219854B2 (en) * | 2010-03-24 | 2012-07-10 | Microsoft Corporation | Validating configuration of distributed applications |
US9959113B2 (en) * | 2011-03-01 | 2018-05-01 | Red Hat, Inc. | Managing versions of software packages |
EP2503454A1 (en) * | 2011-03-24 | 2012-09-26 | Walter Schatz | Method and a system for generating a software product |
US9021471B2 (en) | 2011-05-03 | 2015-04-28 | International Business Machines Corporation | Managing change-set delivery |
US9772842B2 (en) * | 2016-01-25 | 2017-09-26 | International Business Machines Corporation | Managing change sets |
US9720688B1 (en) * | 2016-01-25 | 2017-08-01 | International Business Machines Corporation | Extensible change set conflict and merge gap detection |
CN108108182A (en) * | 2017-12-18 | 2018-06-01 | 北京像素软件科技股份有限公司 | Game version production method and device |
US11474814B1 (en) * | 2020-03-13 | 2022-10-18 | Liberty Mutual Insurance Company | Modular software application configuration management |
US11461093B1 (en) | 2020-03-13 | 2022-10-04 | Liberty Mutual Insurance Company | Automated generation of release note data objects based at least in part on release-time configuration settings |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5909689A (en) * | 1997-09-18 | 1999-06-01 | Sony Corporation | Automatic update of file versions for files shared by several computers which record in respective file directories temporal information for indicating when the files have been created |
US6061678A (en) * | 1997-10-31 | 2000-05-09 | Oracle Corporation | Approach for managing access to large objects in database systems using large object indexes |
US7080371B1 (en) * | 1998-03-03 | 2006-07-18 | Siebel Systems, Inc. | Method, system, apparatus and program product for distribution and instantiation of software upgrades |
US6052531A (en) * | 1998-03-25 | 2000-04-18 | Symantec Corporation | Multi-tiered incremental software updating |
US6381742B2 (en) * | 1998-06-19 | 2002-04-30 | Microsoft Corporation | Software package management |
US6446109B2 (en) * | 1998-06-29 | 2002-09-03 | Sun Microsystems, Inc. | Application computing environment |
US6938075B1 (en) * | 1998-12-24 | 2005-08-30 | Computer Associates Think, Inc. | Method and apparatus for hierarchical software distribution packages including composite packages |
US6449682B1 (en) * | 1999-06-18 | 2002-09-10 | Phoenix Technologies Ltd. | System and method for inserting one or more files onto mass storage |
US6453469B1 (en) * | 1999-06-18 | 2002-09-17 | Phoenix Technologies Ltd. | Method and apparatus to automatically deinstall an application module when not functioning |
US6725371B1 (en) * | 1999-06-30 | 2004-04-20 | Intel Corporation | Secure packet processor |
US6873997B1 (en) * | 1999-08-04 | 2005-03-29 | Agile Software Corporation | Data management system and method for automatically propagating information to disparate information systems from a central location |
US6742025B2 (en) * | 1999-09-30 | 2004-05-25 | International Business Machines Corp. | System and method for server managed modification of operating system data stored within a network device |
US6922722B1 (en) * | 1999-09-30 | 2005-07-26 | Intel Corporation | Method and apparatus for dynamic network configuration of an alert-based client |
US6865737B1 (en) * | 2000-08-23 | 2005-03-08 | Microsoft Corporation | Remote software installation and maintenance |
US6944854B2 (en) * | 2000-11-30 | 2005-09-13 | International Business Machines Corporation | Method and apparatus for updating new versions of firmware in the background |
US6725229B2 (en) * | 2000-12-29 | 2004-04-20 | Bellsouth Intellectual Property Corp. | Configuration utility |
US7013461B2 (en) * | 2001-01-05 | 2006-03-14 | International Business Machines Corporation | Systems and methods for service and role-based software distribution |
US6845394B2 (en) * | 2001-04-16 | 2005-01-18 | Sun Microsystems, Inc. | Software delivery method with enhanced batch redistribution for use in a distributed computer network |
US6836657B2 (en) * | 2002-11-12 | 2004-12-28 | Innopath Software, Inc. | Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade |
-
2001
- 2001-06-04 CA CA002349654A patent/CA2349654A1/en not_active Abandoned
-
2002
- 2002-06-04 US US10/064,011 patent/US20030005093A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20030005093A1 (en) | 2003-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gallaba et al. | Use and misuse of continuous integration features: An empirical study of projects that (mis) use Travis CI | |
US9063725B2 (en) | Portable management | |
US6964034B1 (en) | Application development server and a mechanism for providing different views into the same constructs within a strongly encapsulated environment | |
US20030005093A1 (en) | Server configuration versioning tool | |
EP1497721B1 (en) | A software distribution method and system | |
CA2852760C (en) | Migration assessment for cloud computing platforms | |
US7684964B2 (en) | Model and system state synchronization | |
US5893106A (en) | Object oriented server process framework with interdependent-object creation | |
US7509638B2 (en) | Method and apparatus for providing a pluggable and extendable J2EE architecture | |
US8091066B2 (en) | Automated multi-platform build and test environment for software application development | |
US5617533A (en) | System and method for determining whether a software package conforms to packaging rules and requirements | |
US20060020937A1 (en) | System and method for extraction and creation of application meta-information within a software application repository | |
US8640092B2 (en) | Compatibility evaluation apparatus, compatibility evaluation method, and recording medium | |
US8005803B2 (en) | Best practices analyzer | |
US8196100B2 (en) | Content management system for computer software with dynamic traceability between code and design documents | |
US20040205179A1 (en) | Integrating design, deployment, and management phases for systems | |
US7062529B2 (en) | Server configuration tool | |
EP1372067A2 (en) | Image-based software installation | |
US8285662B2 (en) | Framework for delta analysis during automated builds | |
US20030126586A1 (en) | Organization of test cases | |
US20030192027A1 (en) | Software application development | |
Rankin | The software testing automation framework | |
US7266817B1 (en) | Method and system for creating packages for multiple platforms | |
US9658845B2 (en) | Generating a where-used objects list for updating data | |
EP1050813A2 (en) | Method and apparatus for implementing deployment descriptions in an enterprise environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
FZDE | Discontinued | ||
FZDE | Discontinued |
Effective date: 20060605 |