The intended containerized infrastructure to use when executing cloud migrations
The method of using containerized migration files addresses the complexity of migrating data and software to cloud environments by optimizing infrastructure analysis and generating tailored migration plans, resulting in efficient and cost-effective transitions.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2021-11-08
- Publication Date
- 2026-03-04
Smart Images

Figure 0007824009000007 
Figure 0007824009000008 
Figure 0007824009000009
Abstract
Description
[Technical Field]
[0001] The present invention relates generally to the field of computer software and / or data migration, and more particularly to software and / or data migration in cloud-type networks. [Background technology]
[0002] Virtualized computing environments (VCEs) are known. A VCE can be stored as an "image." A new, active instance of a VCE can be instantiated from the image. There are two types of VCEs: virtual machines and containers. A container is a VCE that uses operating system-level virtualization. This refers to an operating system feature in which the kernel allows the existence of multiple isolated user-space instances called containers. These isolated user-space instances may appear to programs running within them as a real computer. A computer program running on a normal operating system can see all of the computer's resources (connected devices, files and folders, network shares, CPU power, and quantitative hardware capabilities). However, a program running within a container can only access, or "see," the contents of the container and the devices allocated to the container.
[0003] As used herein, a "cloud computing system" is defined as a computer system distributed over a geographical area of a communications network in which server-side computing workloads and / or resources are implemented primarily (or entirely) by VCE (see definition of VCE in the previous paragraph). A cloud computing system typically includes cloud orchestration modules, layers, and programs that manage and control the server-side VCE, including instantiating, configuring, moving between physical host devices, and terminating previously active VCE.
[0004] The Wikipedia entry for "data migration" (as of October 30, 2020) states, in part: "Data migration is the process of selecting, preparing, extracting, transforming, and permanently transferring data from one computer storage system to another. Additionally, verifying the integrity of the migrated data and decommissioning legacy data storage are considered part of the overall data migration process. Data migration is an important consideration in system implementations, upgrades, and integrations and is typically performed in an automated manner whenever possible, thereby freeing human resources from tedious tasks. Data migrations occur for a variety of reasons, including server and storage equipment replacement, maintenance and upgrades, application migration, website consolidation, disaster recovery, and data center relocation." (Footnotes omitted) Summary of the Invention
[0005] According to aspects of the present invention, there is provided a method, computer program product, or system, or combination thereof, that performs the following operations (not necessarily in the following order): (i) receiving a migration plan for migrating computer data and / or computer software, the migration plan including: (a) a plurality of cloud services for a plurality of applications, (b) computer processing operations that implement dependencies that exist between and among the applications of the plurality of applications, and (c) computer processing operations that implement middleware required to run the applications of the plurality of applications; (ii) generating a containerized migration file in accordance with the migration plan; (iii) copying the containerized migration file to a set of containers so as to implement the migration plan using containers from the set of containers; and (iv) migrating computer data and / or computer software between a source computer subsystem and a target computer subsystem using containers from the set of containers to implement the migration plan. [Brief explanation of the drawings]
[0006] [Figure 1] 1 is a block diagram illustrating a first embodiment of a system according to the present invention; [Figure 2] 4 is a flowchart illustrating a first embodiment method performed at least in part by a first embodiment system. [Figure 3] FIG. 2 is a block diagram illustrating the machine logic (eg, software) portion of the first embodiment system. [Figure 4] FIG. 2 is a diagram of a screenshot generated by the first embodiment system. [Figure 5] 4 is a flowchart illustrating a first embodiment method performed at least in part by a first embodiment system. DETAILED DESCRIPTION OF THE INVENTION
[0007] Some embodiments of the present invention are directed to techniques for having a computer system: receive a migration plan for migrating computer data and / or computer software; generate a containerized migration file according to the migration plan; copy the containerized migration file to a set of containers such that containers from the set of containers can be used to implement the migration plan; and migrate computer data and / or computer software between a subsystem of a source computer and a subsystem of a target computer using containers from the set of containers to implement the migration plan.
[0008] This detailed description is divided into the following subsections: (i) Hardware and Software Environment, (ii) Example Embodiments, (iii) Further Comments or Embodiments or Combinations thereof, and (iv) Definitions.
[0009] I. Hardware and Software Environment The present invention may be a system, method, or computer program product, or a combination thereof, integrated at any possible level of technical detail. The computer program product may include a computer-readable storage medium having stored thereon computer-readable program instructions for causing a processor to perform aspects of the present invention. The computer program product may include a computer-readable storage medium having stored thereon computer-readable program instructions for causing a processor to perform aspects of the present invention.
[0010] A computer-readable storage medium may be a tangible device capable of retaining and storing instructions for use by an instruction execution device. The computer-readable storage medium may be, by way of example, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or a suitable combination thereof. More specific examples of computer-readable storage media include portable computer diskettes, hard disks, RAM, ROM, EPROM (or flash memory), SRAM, CD-ROMs, DVDs, memory sticks, floppy disks, mechanically encoded devices having instructions recorded on punch cards or ridge-in-groove structures, or the like, and suitable combinations thereof. Computer-readable storage devices, as used herein, should not be construed as ephemeral signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted over wires.
[0011] A "storage device" is defined herein as something made or adapted to store computer code in a manner that allows the computer code to be accessed by a computer processor. A storage device typically includes a storage medium, which is the material on which the computer code data is stored. A single "storage device" may use: (i) multiple, spaced-apart, discrete portions (e.g., a set of six solid-state storage devices located in six laptop computers that collectively store one computer program), or (ii) multiple storage media (e.g., a set of computer code partially stored as magnetic domains in the computer's non-volatile storage and partially stored in a set of semiconductor switches in the computer's volatile memory), or may have a combination thereof. The term "storage medium" should be interpreted to cover situations in which multiple different types of storage media are used.
[0012] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computer / processing device. Alternatively, they can be downloaded to an external computer or external storage device via a network (e.g., the Internet, a LAN, a WAN, or a wireless network, or a combination thereof). The network can include copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface within each computer / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions to a computer-readable storage medium in the respective computer / processing device for storage.
[0013] The computer-readable program instructions for carrying out the operations of the present invention can be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or source or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk and C++, and procedural programming languages such as the "C" programming language and similar programming languages. The computer-readable program instructions can execute entirely on the user's computer as a stand-alone software package, partially on the user's computer, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network, including a LAN or WAN, or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry, including, for example, programmable logic circuits, field programmable gate arrays (FPGAs), programmable logic arrays (PLAs), can execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to customize the electronic circuitry for carrying out aspects of the present invention.
[0014] Embodiments of the present invention are described herein with reference to flowchart and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present invention. Each block of the flowchart and / or block diagrams, and combinations of blocks in the flowchart and / or block diagrams, can be implemented by computer-readable program instructions.
[0015] The computer-readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus to produce a machine, whereby the instructions, executed by the processor of such computer or other programmable data processing apparatus, create means for performing the functions / acts identified in one or more blocks of the flowcharts and / or block diagrams. The computer-readable program instructions may also be stored on a computer-readable storage medium capable of instructing a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner. The computer-readable storage medium having instructions stored thereon thereby constitutes an article of manufacture including instructions for performing aspects of the functions / acts identified in one or more blocks of the flowcharts and / or block diagrams.
[0016] Computer-readable program instructions may also be loaded into a computer, other programmable device, or other device and a series of operational steps executed on the computer, other programmable device, or other device to create a computer-implemented process, whereby the instructions executing on the computer, other programmable device, or other device perform the functions / operations identified in one or more blocks in the flowcharts and / or block diagrams.
[0017] The flowcharts and block diagrams in the figures of this disclosure illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for performing specific logical functions. In some implementations, the functions shown in the blocks may be executed in a different order than shown in the figures. For example, two blocks shown in succession may actually be executed concurrently or nearly concurrently, or may even be executed in reverse order, depending on the functionality involved. Note that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, may be implemented by a dedicated hardware-based system that performs specific functions or operations or executes a combination of dedicated hardware and computer instructions.
[0018] 1, networked computer system 100 is one embodiment of a hardware and software environment for use with various embodiments of the present invention. Networked computer system 100 includes: a server subsystem 102 (sometimes more simply referred to herein as subsystem 102); a source subsystem 104, a target subsystem 106; and a communication network 114. Server subsystem 102 includes a server computer 200; a communication unit 202; a processor set 204; an input / output (I / O) interface set 206; memory 208; persistent storage 210; a display 212; external devices 214; random access memory (RAM) 230; a cache 232; and programs 300.
[0019] Subsystem 102 may be a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smartphone, or any other type of computer (see the definition of "computer" in the Definitions section below). Program 300 is a collection of machine-readable instructions or data, or a combination thereof, used to create, manage, and control specific software functions described in detail below in the Exemplary Embodiments subsection of this Detailed Description section.
[0020] Subsystem 102 can communicate with other computer subsystems via communications network 114. Network 114 can be, for example, a local area network (LAN), a wide area network (WAN) such as the Internet, or a combination thereof, and can include wired, wireless, or fiber optic connections. In general, network 114 can be any combination of connections and protocols that support communication between server and client subsystems.
[0021] Subsystem 102 is shown as a block diagram with many double arrows. These double arrows (without separate reference numerals) represent a communications fabric that provides communication between the various components of subsystem 102. This communications fabric may be implemented with any architecture designed to pass data or control information, or a combination thereof, between processors (such as microprocessors, communications and network processors), system memory, peripheral devices, and any other hardware components in a computer system. For example, the communications fabric may be implemented, at least in part, with one or more buses.
[0022] Memory 208 and persistent storage 210 are computer-readable storage media. In general, memory 208 can include any suitable volatile or non-volatile computer-readable storage medium. It is further noted that, currently or in the near future, or both: (i) external device 214 may be able to provide some or all of the memory for subsystem 102, or (ii) a device external to subsystem 102 may be able to provide memory for subsystem 102, or a combination thereof. Both memory 208 and persistent storage 210: (i) store data in a manner less transient than signals in transit; and (ii) store data on tangible media (such as the magnetic or optical domain). In this embodiment, memory 208 is volatile storage, and persistent storage 210 provides non-volatile storage. The media used by persistent storage 210 may be removable. For example, a removable hard disk may be used for persistent storage 210. Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer-readable storage medium that is also part of persistent storage 210.
[0023] Communications unit 202 provides for communication with other data processing systems or devices external to subsystem 102. In these examples, communications unit 202 includes one or more network interface cards. Communications unit 202 may provide communication through the use of either or both physical and wireless communications links. Any software modules discussed herein may be downloaded to a persistent storage device (such as persistent storage 210) via a communications unit (such as communications unit 202).
[0024] The I / O interface set 206 enables data input and output to and from other devices that may be locally connected in data communication with the server computer 200. For example, the I / O interface set 206 provides a connection to an external device set 214. The external device set 214 will typically include devices such as a keyboard, a keypad, a touchscreen, or any other suitable input device or combination thereof. The external device set 214 may also include portable computer-readable storage media, such as thumb drives, portable optical or magnetic disks, and memory cards. Software and data used to practice embodiments of the present invention, such as the program 300, may be stored on such portable computer-readable storage media. The I / O interface set 206 is also connected in data communication with a display 212. The display 212 is a display device that provides a mechanism for displaying data to a user and may be, for example, a computer monitor or a smartphone display screen.
[0025] In this embodiment, program 300 is stored in persistent storage 210, typically via one or more memories in memory 208, for access and / or execution by one or more computer processors in processor set 204. Those skilled in the art will appreciate that program 300 may be stored in a more highly distributed manner during its runtime and / or when not being executed. Program 300 may include both machine-readable and executable instructions or entity data (i.e., the type of data stored in a database), or a combination thereof. In this particular embodiment, persistent storage 210 includes a magnetic hard disk drive. To name a few possible variations, persistent storage 210 may include a solid-state hard drive, a semiconductor memory device, a read-only memory (ROM), an erasable programmable read-only memory (EPROM), a flash memory, or any other computer-readable storage medium capable of storing program instructions or digital information.
[0026] The programs described herein are identified based on the application for which they are implemented in particular embodiments of the invention. However, it should be understood that any particular program nomenclature herein is used merely for convenience, and thus the invention should not be limited to use in any particular application specified and / or implied by such nomenclature.
[0027] The description of various embodiments of the present invention has been presented for illustrative purposes and is not intended to be exhaustive or limiting of the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terms used herein have been selected to best describe the principles of the embodiments, practical applications or technical improvements to technology found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.
[0028] II. Example Embodiments As shown in Figure 1, a networked computer system 100 is an environment in which an exemplary method in accordance with the present invention may be implemented. As shown in Figure 2, a flowchart 250 illustrates an exemplary method in accordance with the present invention. As shown in Figure 3, a program 300 performs or controls the execution of at least some of the method operations of flowchart 250. This method and associated software will now be discussed throughout the following paragraphs, with extensive reference to the blocks of Figures 1, 2, and 3.
[0029] Processing begins at operation S255, where migration plan module (“mod”) 302 generates a migration plan. The migration plan (i) includes cloud services for the plurality of applications, (ii) computational operations that implement dependencies that exist between and among the plurality of applications, and (iii) computational operations that implement middleware required to run the plurality of applications.
[0030] Processing continues to operation S260, where the containerized migration file module 304 generates a containerized migration file according to the migration plan that includes the various components of the migration plan listed in the previous paragraph.
[0031] Processing continues to operation S265, where the container creation module 306 copies the containerized migration file to a set of containers such that the migration plan is included as part of one or more containers. In this example, there is one container 400, as shown in FIG.
[0032] Processing continues to operation S270 where the migration execution module 308 executes the migration between the source subsystem 104 and the target subsystem 106.
[0033] III. Further Comments and / or Embodiments A method according to an embodiment of the invention for migrating a containerized infrastructure to the cloud includes the following operations (not necessarily in the following order): (i) in response to receiving information representative of infrastructure servers and applications, analyzing the information to identify associations with known container applications; (ii) in response to a decision to migrate the applications, generating an application target list for migration using the identified association information; (iii) generating a migration plan including cloud services for the different applications and associated installation steps for implementing dependencies and middleware for the different applications; (iv) generating containerized migration files according to the migration plan including the cloud services, which are copied to the containers; (v) testing services and ports serving the servers for the containerized migration files; and (vi) in response to a positive test, generating final services and exposing ports.
[0034] Some embodiments of the present invention may include one or more of the following operations, features, characteristics, or advantages, or combinations thereof: (i) providing a new way to analyze existing bare metal or virtualized, non-containerized environments to facilitate migration to proposed cloud providers; (ii) matching migration code to desired, feasible cloud providers; (iii) analyzing solutions for migrating non-migrated cloud environments to containers; (iv) suggesting the best cloud providers that can be used to monetize new features of cloud providers by finding easy ways from the user's perspective; (v) analyzing infrastructure that has not yet been migrated to suggest steps for containerized applications; (vi) including mechanisms to facilitate migration; or (vii) identifying the best cloud providers based on bare metal or virtualized system configuration, or combinations thereof.
[0035] Some embodiments of the present invention recognize the following facts, potential problems, and / or potential areas of improvement with respect to the current state of technology: (i) containerized environments in the cloud are becoming increasingly common (e.g., taking old applications based on traditional infrastructure and rethinking the traditional architecture to layer-based containers to take advantage of all the benefits of cloud infrastructure, such as efficiency / cost savings, data security, scalability, mobility, disaster recovery, etc.); (ii) thousands of applications are moving to cloud environments every year; (iii) the road to moving to a cloud environment is sometimes full of curves and potholes, turning a simple task into a difficult and arduous responsibility; (iv) businesses are realizing the benefits of cloud environments; (v) businesses are understanding how reducing the cost of hardware usage can impact their bottom line; (vi) they are determining what the most convenient cloud infrastructure configuration is for their applications and operating systems; (vii) by using cloud-based solutions, businesses can prevent many issues, such as bad containers and over-utilization of resources, which can result in businesses wasting more hardware than before; or (viii) using this method, they can have intelligent containers running their applications with improved performance and reduced costs, or a combination thereof.
[0036] Some embodiments of the present invention may include one or more of the following operations, features, characteristics, or advantages, or combinations thereof: (i) a predictive methodology that can package current infrastructure (e.g., processes, configuration files, parameters, running applications, dependencies, resources, etc.) into a desired migration file, in other words, an automatically generated infrastructure image that is containerized in a managed and fully operational manner; (ii) selecting the best cloud configuration available for a certain period of time; (iii) including using the best cloud environment from all providers; (iv) persisting in a containerized environment (e.g., off-the-shelf container software) using middleware, packages, and generation of a set of instructions that create a container solution based on data from endpoints; (v) quickly and easily migrating traditional architectures to a container layer-based infrastructure; (vi) obtaining the highest-ranking cloud solution on the market; (vii) assisting in the automatic creation of container-based files; (viii) predicting faster and more efficient application through intelligent reduction of services to optimal and lightweight containers or groups of containers; or (ix) obtaining a migration file (once accepted) using the most accurate cloud configuration depending on the proposed solution, or any combination thereof.
[0037] Some embodiments of the present invention may include one or more of the following operations, features, characteristics or advantages or combinations thereof: (i) helping businesses acquire next generation solutions for the future; (ii) helping development needs of services on cloud computing, particularly scaling up the emerging containerized ecosystem in computing environments; (iii) infrastructure applications taking advantage of making migration to cloud computing more viable; or (iv) taking advantage of methods aimed at analyzing infrastructure environments for (a) automatic generation of containerized files required for cloud migration, and (b) generation of optimal service and cloud solution configurations depending on the available clouds, or combinations thereof.
[0038] Some embodiments of the present invention may include one or more of the following operations, features, characteristics or advantages or combinations thereof: (i) analyzing all information of multiple infrastructure systems to obtain the most accurate migration solution according to the closest solution; or (ii) providing an option to select between different types of commercially available cloud providers taking into account the infrastructure and software requirements of the client application; or combinations thereof.
[0039] Some embodiments of the present invention recognize the following facts, potential problems, or potential areas for improvement, or a combination thereof, with respect to the current state of the art: (i) systems and methods exist for managing applications that reduce the complexity of building an application or a complete set of applications in a traditional infrastructure; (ii) there are many infrastructure issues for maintaining certain infrastructure software components; or (iii) when infrastructure software components are not needed at the end of a migration, this can cause a disaster, or a combination thereof.
[0040] Some embodiments of the present invention may include one or more of the following operations, features, characteristics, or advantages, or a combination thereof: (i) analyzing the most accurate characteristics of the infrastructure, gathering those characteristics, and proposing documents for containerizing an application; or (ii) detecting whether an application can be containerized depending on the following factors, including but not limited to: (a) the application's usage, and (b) system resources such as memory, space, etc., or a combination thereof.
[0041] As shown in FIG. 5, flowchart 500 includes: start block S502; obtain infrastructure servers and applications block S504; analyze applications and associate them with known container apps block S506; system and application portfolio storage S508; determine migration options block S510; select other servers / services to analyze block S512; obtain application target list for migration block S514; create most accurate migration plan and cloud services block S516; create containerized migration file proposal block S518; market available service storage S520; and end block S522.
[0042] In some embodiments of the present invention, the following additional information applies to the operations described in FIG. 5 , flowchart 500 above: (i) infrastructure servers in block S504 typically refer to both physical and virtual servers (e.g., Power S390, PPC64LE, x86, VM (Virtual Machine) ware, and any other virtual or physical servers); (ii) applications in block S504 typically refer to back-end applications, database services, web apps, mobile app back-end services, and / or front-end app services running in the servers; (iii) container apps in block S506 are typically known as cloud catalog services are terminated and assigned per application (e.g., if the application is running on a technology such as node.js, a mechanism associates the application with the cloud provider's catalog offering); (iv) a module in application portfolio storage S508 typically includes a catalog of applications and services available from commercially available cloud services or cloud providers, where the application is currently (v) Selecting other servers / services to analyze in block S512 typically refers to an iterative process of examining existing running services on the target infrastructure system to determine services available in cloud offers from different providers in order to propose an optimal migration strategy; (vi) Creating the most accurate migration plan and cloud services in block S516 is a specific module that analyzes cloud offers to compare different characteristics such as middleware, cost, migration time, replicas, usage, etc., selects the best migration plan, and proposes the most accurate migration plan (e.g., what files can be migrated smoothly depending on the service offered; therefore, the most accurate migration plan provides the best fit between the infrastructure services and the service offered with the least effort).Also, if the service infrastructure runs on a DB2 database, cloud services often refer to migration to a commercial cloud service that offers different DB2 standard tools, making the migration of that particular software component smooth. The information typically included is migration files (e.g., Docker files, Kubernetes files, configuration files, etc.) that are executed on the cloud provider to facilitate the migration. Different cloud providers are typically selected to run different applications or services, and in such cases, a hybrid cloud that distributes services across different clouds may be the best option. The S520 of market-available service storage is typically a commercial cloud service or cloud provider.
[0043] As described in the following paragraphs, some embodiments of the present invention involve automated analysis by a system for building a containerized environment, where the method involves analyzing information containing specific characteristics of the system on which a commercially available software application is running.
[0044] 1. This method detects that the Debian (OS (Operating System) environment is Ubuntu 14.04, but is an older version. This method checks whether an upgrade or migration is possible and whether the application still works. If it is possible, it proceeds with the execution of the application. If it is not possible but other packages are required, these packages will be installed by the application. If the application does not support a certain package, it will keep the same (old) version. TIFF0007824009000001.tif5156
[0045] 2. The next step is to discover all the services involved in the different applications and obtain the specific steps to install all dependencies and middleware, such as commercial software, discovered by some embodiments of the present invention. TIFF0007824009000002.tif102165
[0046] 3. The next step is to extract the configuration files and application folders, where some embodiments of the present invention create copies of the files within the container. TIFF0007824009000003.tif73169
[0047] 4. The final step is to check the services and ports running inside the server, create the services, and expose the necessary ports. TIFF0007824009000004.tif5151
[0048] After performing the analysis process, some embodiments of the present invention create an optimal and efficient image containerization proposal for the application, create more efficient modules, and finish by cleaning up unused modules and resources. TIFF0007824009000005.tif210167
[0049] 5. Based on the middleware and other different options, some embodiments of the present invention will detect the different services required and based on this, give the user several options of cloud services to choose from. The system will create demo instances for these cloud services and suggest them to the user. Example output: > cloud environments and instances, you can use, (for example): (commercially available cloud computing services) choose the option you want >
[0050] Based on this determination, the creation of containerized migration files is performed automatically in the particular cloud environment, and some embodiments of the present invention anticipate when file creation is required for cloud deployment and orchestration. TIFF0007824009000006.tif202168
[0051] At the end of this operation, the user will have all the specific files to migrate and a plan that fits their infrastructure assessment.
[0052] Some embodiments of the present invention may include one or more of the following operations, features, characteristics, or advantages, or combinations thereof, for a server running an older off-the-shelf application that requires php5.2, apache2.2, a DB2 client for php, UCD (User Centered Design) for automated deployment, and a new relic: (i) providing a base dockerfile with all application requirements, such as db2driver and PDO DB2; (ii) adding UCD agent token and config file requirements; (iii) copying license files for the new relic and placing them in the correct files; (iv) publishing ports specified in the app's .env, as well as publishing ports for the apache service and database service; (v) based on an analysis of the application and software requirements, the user is provided with the information needed to select the correct cloud provider; (vi) because this is a DB2 driver, the method selects only those that support this type of middleware, resulting in a list of off-the-shelf cloud providers; (vii) if the user selects a specific cloud from the list of off-the-shelf cloud providers, the method generates a YAML (YAML ain't markup) for the orchestrator. (viii) generate a YAML for the orchestrator containing the services and ports that need to be opened to generate the deployment; or (ix) the end result will be a container-based file and specific YAML cloud-based files for the solution container (based on the cloud offering of the selected cloud provider) to allow for easier migration, or a combination of these.
[0053] Some embodiments of the present invention may include one or more of the following features, characteristics, or advantages or combinations thereof: (i) providing an intelligent and optimal way to provide imperative text-based containers (to build whatever is in them); (ii) creating containers based on systems; (iii) being an intelligent container creator based on application architecture; (iv) providing a way to create optimal containers from a code perspective; (v) making predictions regarding layers that may be optional architectures for user applications; (vi) including specific analysis of infrastructure; or (vii) creating links between what is needed and essential for applications to run optimally and easily, or combinations thereof.
[0054] Some embodiments of the present invention may include one or more of the following features, characteristics, or advantages, or a combination thereof: (i) while there are several commercially available software-based tools that can collect information about the system itself, some embodiments of the present invention associate the optimal cloud provider or migration mechanism; or (ii) select the optimal for the infrastructure itself, including, but not limited to, cost, performance, migration time, software and emerging technologies, privacy and compliance, high availability, security, scalability and portability, among others, or a combination thereof.
[0055] Some embodiments of the present invention may include one or more of the following features, characteristics, or advantages, or a combination thereof: (i) to obtain or identify a target list for migration, some methods according to the present invention containerize the proposal to generate an efficient image to be instantiated in different options of the cloud ecosystem; (ii) provide a mechanism for smart migration; (iii) provide a mechanism for generating machine-logic insights on how to reduce some aspects of the infrastructure included in the customer's configuration (e.g., the number of servers configured to be allocated for a specific purpose); (iv) provide a mechanism for generating machine-logic insights on recommendations to software architects, product owners, technical leaders, etc. regarding changes to a hybrid infrastructure, which typically refers to an infrastructure where the systems are not necessarily of the same type of hardware or virtualization technology; (v) provide insights for migration optimization, and propose not only the entire migration but also parts of it, taking into account different factors for optimization; or (vi) minimize cost, migration time, or maximize performance, or a combination thereof, which typically includes data transfer rate, FLOPS, network performance, resiliency, etc., or a combination thereof.
[0056] Some embodiments of the present invention may include one or more of the following features, characteristics or advantages or combinations thereof: (i) while in the current prior art for using machine logic to plan data migration, most of the ideas, solutions or products envision migrating the entire infrastructure and generate a plan therefor based on that, sometimes various embodiments of the present invention instead provide smart selective insight into which specific components of the infrastructure can be migrated for optimization, especially when the infrastructure is a hybrid infrastructure; (ii) provide a plan with multiple possible cloud providers to be used in the plan, or at least considered for use, or both; (iii) consider multiple cloud services along with the infrastructure plan; (iv) machine logic determines selective migration of components through constant analysis of infrastructure to suggest cloud providers and implications for optimization; (v) sometimes infrastructure should not be migrated completely, but specific portions; (vi) various embodiments of the present invention are advantageous in controlling selective migration of infrastructure; (vii) selective migration of infrastructure, as the phrase is used herein, typically does not migrate everything, but rather only parts of the infrastructure; (viii) provides insight into which cloud provider is most suitable for a particular piece of software; (ix) suggests insight into hybrid environments to gradually reduce the number of systems in the infrastructure and provides documentation or files for migration with specific cloud providers;(x) multiple infrastructures (where multiple infrastructures typically refers to the idea that a customer can handle more than one infrastructure (perhaps the most accurate term might be plurality of infrastructures)) and multiple service providers, the combination of which makes the best hybrid solution; or (xi) providing specific files, components, or combinations thereof, necessary to achieve the objectives set forth in one or more of the preceding items in this list;
[0057] IV. Definition The present invention: The term "the present invention" should not be construed as an absolute indication that the subject matter described is included in either the claims as filed or the claims that may ultimately be issued after patent prosecution; the term "the present invention" is used to help the reader get a general sense of what disclosures herein are considered potentially new, but the understanding implied by this use of the term "the present invention" is tentative and provisional, and is subject to change as relevant information evolves and the claims may be modified during the course of patent prosecution.
[0058] Embodiments: See definition of "present invention" above. A similar caveat applies to the term "embodiments."
[0059] and / or: inclusive or; for example, A, B "and / or" C means that at least one of A or B or C is true and applicable.
[0060] Including / include / includes: means "including but not necessarily limited to," unless expressly stated otherwise.
[0061] Module / Sub-Module: A set of hardware, firmware, or software, or a combination thereof, that operatively functions to perform a certain function, whether the module is (i) in a single local, contiguous location; (ii) widely distributed; (iii) in a single contiguous location within a larger software code; (iv) within a single software code; (v) within a single storage device, memory, or medium; (vi) mechanically linked; (vii) electrically linked; or (viii) linked by data communication, or any combination thereof.
[0062] Computer: includes any device that has significant data processing or machine-readable instruction reading functionality, or both, including, but not limited to, desktop computers, mainframe computers, laptop computers, field programmable gate array (FPGA)-based devices, smartphones, personal digital assistants (PDAs), body-mounted or insertable computers, embedded device-style computers, and application-specific integrated circuit (ASIC)-based devices.
[0063] Set of things: Does not include the empty set; a "set of things" means that there is at least one thing and possibly more; for example, a set of computers means that there is at least one computer and possibly more computers.
Claims
1. receiving a migration plan for migration of computer data and / or computer software, the migration plan including: (i) a plurality of cloud services for a plurality of applications; (ii) computer processing operations that implement dependencies that exist within and between the applications of the plurality of applications; and (iii) computer processing operations that implement middleware required to run the applications of the plurality of applications; generating the migration plan, the migration plan including identifying a plurality of infrastructure servers involved in the migration, identifying the plurality of applications, and analyzing the plurality of applications to identify associations with corresponding cloud services; generating a containerized migration file according to the migration plan; copying the containerized migration file to a set of containers such that containers from the set of containers can be used to implement the migration plan; and migrating computer data and / or computer software between a source computer subsystem and a target computer subsystem using a container from the set of containers to implement the migration plan.
2. The computer-implemented method (CIM) of claim 1 , wherein the containerized migration file includes multiple cloud services.
3. The computer-implemented method (CIM) of claim 2 , wherein the copying the containerized migration file to a set of containers includes copying the plurality of cloud services.
4. 10. The computer-implemented method (CIM) of claim 1, further comprising testing services and ports running on a server of the containerized migration file to obtain a positive test result.
5. In response to the positive test result, generating a final service; The computer-implemented method (CIM) of claim 4, further comprising: publishing the port.
6. A processor, receiving a migration plan for migration of computer data and / or computer software, the migration plan including: (i) a plurality of cloud services for a plurality of applications; (ii) computer processing operations that implement dependencies that exist within and between the applications of the plurality of applications; and (iii) computer processing operations that implement middleware required to run the applications of the plurality of applications; generating the migration plan, the migration plan including identifying a plurality of infrastructure servers involved in the migration, identifying the plurality of applications, and analyzing the plurality of applications to identify associations with corresponding cloud services; generating a containerized migration file according to the migration plan; copying the containerized migration file to a set of containers such that containers from the set of containers can be used to implement the migration plan; migrating computer data and / or computer software between a source computer subsystem and a target computer subsystem using a container from the set of containers to implement the migration plan.
7. The computer program product of claim 6 , wherein the containerized migration file includes multiple cloud services.
8. The computer program product of claim 7 , wherein the copying of the containerized migration file to a set of containers comprises copying the plurality of cloud services.
9. The processor:
7. The computer program of claim 6, further comprising testing services and ports running on a server of the containerized migration file to obtain a positive test result.
10. The processor, In response to the positive test result, generating a final service; 10. The computer program product of claim 9, further comprising: publishing the port.
11. A processor set; a set of storage devices; computer code collectively stored on said set of storage devices, said computer code including data and instructions for causing said set of processors to perform operations, said operations comprising at least: receiving a migration plan for migration of computer data and / or computer software, the migration plan including: (i) a plurality of cloud services for a plurality of applications; (ii) computer processing operations that implement dependencies that exist within and between the applications of the plurality of applications; and (iii) computer processing operations that implement middleware required to run the applications of the plurality of applications; generating the migration plan, the migration plan including identifying a plurality of infrastructure servers involved in the migration, identifying the plurality of applications, and analyzing the plurality of applications to identify associations with corresponding cloud services; generating a containerized migration file according to the migration plan; copying the containerized migration file to a set of containers such that containers from the set of containers can be used to implement the migration plan; and migrating computer data and / or computer software between a source computer subsystem and a target computer subsystem using a container from the set of containers to implement the migration plan.
12. The computer system (CS) of claim 11, wherein the containerized migration file includes multiple cloud services.
13. The computer system (CS) of claim 12, wherein said copying said containerized migration file to a set of containers comprises copying said plurality of cloud services.
14. The computer code further includes instructions for causing the processor set to perform an operation, the operation comprising: The computer system (CS) of claim 11, further comprising: testing services and ports running on a server of the containerized migration file to obtain a positive test result.
15. The computer code further includes instructions for causing the processor set to perform an operation, the operation comprising: In response to the positive test result, generating a final service; 15. The computer system (CS) of claim 14, further comprising: publishing said port.
Citation Information
Patent Citations
System for managing and scheduling containers
JP2019149192A
How to containerize your applications on cloud platforms
JP2020520528A
Binding backend service endpoints to API functions in an API registry
JP2020536320A
Optimizing redeployment of functions and services across multiple container platforms and installations
US20190102157A1