IP Library › Granted Patent US 11,366,650
Granted Patent B1
US 11,366,650 · App. 17/112,193 · Granted Jun 21, 2022

Automatic generation of affinity and anti-affinity rules

Inventors: Praveen Jayachandran (Bangalore, IN); Amith Singhee (Bangalore, IN); Ashok Pon Kumar Sree Prakash (Bangalore, IN); Chander Govindarajan (Chennai, IN); Venkatraman Ramakrishna (Bangalore, IN)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F8/60G06F8/10G06F8/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,366,650
App. No.
17/112,193
Granted
Jun 21, 2022
Kind
B1
Abstract

One embodiment provides a computer implemented method, including: receiving an application to be deployed on a container-based environment; obtaining a specification for the application including information regarding a portion of the application contained within a given container; extracting portion information corresponding to connections between different portions of the application and interferences between different portions of the application; identifying affinity indicators and anti-affinity indicators for the portions of the application, wherein the affinity indicators are based upon the connections between different portions of the application and wherein the anti-affinity indicators are based upon the interferences between different portions of the application; and constructing affinity rules and anti-affinity rules for the containers by combining the affinity indicators to construct affinity rules and combining the anti-affinity indicators to construct anti-affinity rules.

Claims (42)

1. A computer implemented method, comprising:

receiving an application to be deployed on a container-based environment, wherein the application is split into containers comprising portions of the application;

obtaining a specification for the application comprising information regarding a portion of the application contained within a given container;

extracting, from the specification, portion information corresponding to connections between different portions of the application and interferences between different portions of the application;

identifying, from the portion information, affinity indicators and anti-affinity indicators for the portions of the application, wherein the affinity indicators are based upon the connections between different portions of the application and wherein the anti-affinity indicators are based upon the interferences between different portions of the application;

constructing affinity rules and anti-affinity rules for the containers by combining the affinity indicators to construct affinity rules and combining the anti-affinity indicators to construct anti-affinity rules, wherein the affinity rules identify containers to be hosted by the same host on the container-based environment and wherein the anti-affinity rules identify containers to be hosted by different hosts on the container-based environment, wherein the combining the affinity indicators and the combining the anti-affinity indicators comprises obtaining priority constraints from a user, identifying affinity indicators and anti-affinity indicators to be given higher weights than other affinity indicators and anti-affinity indicators and incorporating the priority constraints into constructing the affinity rules and the anti-affinity rules by building a precedence hierarchy of meta constraints and assigning normalized weights to the meta constraints; and

presenting the affinity rules and anti-affinity rules to a user; and

modifying the affinity rules and anti-affinity rules based upon input from the user.

2. The computer implemented method of claim 1 , comprising identifying, from the portion information, pod design indicators indicating portions of the application to be included within a pod of the container-based environment.

3. The computer implemented method of claim 2 , comprising constructing, utilizing the pod design indicators, a pod design for the application within the container-based environment.

4. The computer implemented method of claim 1 , wherein the combining the affinity indicators and combining the anti-affinity indicators comprises utilizing a rule-based technique.

5. The computer implemented method of claim 1 , wherein the combining the affinity indicators and combining the anti-affinity indicators comprises performing an iterative user-guided analysis, wherein the iterative user-guided analysis comprises iteratively (i) performing the presenting the affinity rules and anti-affinity rules to a user, (ii) receiving input from a user changing a priority of at least one of: the affinity rules and the anti-affinity rules, and (iii) performing the modifying the affinity rules and anti-affinity rules based upon the input from the user.

6. The computer implemented method of claim 1 , wherein the identifying affinity indicators comprises identifying interactions between application portions from service interactions and network configurations.

7. The computer implemented method of claim 1 , wherein the identifying affinity indicators and identifying anti-affinity indicators comprises identifying resource requirements of the portions that indicate one of: no resource interference between application portions and a resource interference between application portions.

8. The computer implemented method of claim 1 , wherein the identifying anti-affinity indicators comprises identifying a number of instances of a given portion to be deployed on the container-based environment and identifying fault tolerance requirements across the number of instances.

9. The computer implemented method of claim 1 , wherein the portion information comprises interactions between application portions, application portion relationships, application portion constraints, and fault tolerance requirements.

10. An apparatus, comprising:

at least one processor; and

a non-transitory computer readable storage medium having computer readable program code embodied therewith and executable by the at least one processor;

wherein the computer readable program code comprises code that receives an application to be deployed on a container-based environment, wherein the application is split into containers comprising portions of the application;

wherein the computer readable program code comprises code that obtains a specification for the application comprising information regarding a portion of the application contained within a given container;

wherein the computer readable program code comprises code that extracts, from the specification, portion information corresponding to connections between different portions of the application and interferences between different portions of the application;

wherein the computer readable program code comprises code that identifies, from the portion information, affinity indicators and anti-affinity indicators for the portions of the application, wherein the affinity indicators are based upon the connections between different portions of the application and wherein the anti-affinity indicators are based upon the interferences between different portions of the application;

wherein the computer readable program code comprises code that constructs affinity rules and anti-affinity rules for the containers by combining the affinity indicators to construct affinity rules and combining the anti-affinity indicators to construct anti-affinity rules, wherein the affinity rules identify containers to be hosted by the same host on the container-based environment and wherein the anti-affinity rules identify containers to be hosted by different hosts on the container-based environment, wherein the combining the affinity indicators and the combining the anti-affinity indicators comprises obtaining priority constraints from a user identifying affinity indicators and anti-affinity indicators to be given higher weights than other affinity indicators and anti-affinity indicators and incorporating the priority constraints into constructing the affinity rules and the anti-affinity rules by building a precedence hierarchy of meta constraints and assigning normalized weights to the meta constraints; and

wherein the computer readable program code comprises code that presents the affinity rules and anti-affinity rules to a user; and

wherein the computer readable program code comprises code that modifies the affinity rules and anti-affinity rules based upon input from the user.

11. A computer program product, comprising:

a non-transitory computer readable storage medium having computer readable program code embodied therewith, the computer readable program code executable by a processor;

wherein the computer readable program code comprises code that receives an application to be deployed on a container-based environment, wherein the application is split into containers comprising portions of the application;

wherein the computer readable program code comprises code that obtains a specification for the application comprising information regarding a portion of the application contained within a given container;

wherein the computer readable program code comprises code that extracts, from the specification, portion information corresponding to connections between different portions of the application and interferences between different portions of the application;

wherein the computer readable program code comprises code that identifies, from the portion information, affinity indicators and anti-affinity indicators for the portions of wherein the affinity indicators are based upon the connections between different portions of the application and wherein the anti-affinity indicators are based upon the interferences between different portions of the application;

wherein the computer readable program code comprises code that constructs affinity rules and anti-affinity rules for the containers by combining the affinity indicators to construct affinity rules and combining the anti-affinity indicators to construct anti-affinity rules, wherein the affinity rules identify containers to be hosted by the same host on the container-based environment and wherein the anti-affinity rules identify containers to be hosted by different hosts on the container-based environment, wherein the combining the affinity indicators and the combining the anti-affinity indicators comprises obtaining priority constraints from a user identifying affinity indicators and anti-affinity indicators to be given higher weights than other affinity indicators and anti-affinity indicators and incorporating the priority constraints into constructing the affinity rules and the anti-affinity rules by building a precedence hierarchy of meta constraints and assigning normalized weights to the meta constraints; and

wherein the computer readable program code comprises code that presents the affinity rules and anti-affinity rules to a user; and

wherein the computer readable program code comprises code that modifies the affinity rules and anti-affinity rules based upon input from the user.

12. The computer program product of claim 11 , comprising identifying, from the portion information, pod design indicators indicating portions of the application to be included within a pod of the container-based environment.

13. The computer program product of claim 12 , comprising constructing, utilizing the pod design indicators, a pod design for the application within the container-based environment.

14. The computer program product of claim 11 , wherein the combining the affinity indicators and combining the anti-affinity indicators comprises utilizing a rule-based technique.

15. The computer program product of claim 11 , wherein the combining the affinity indicators and combining the anti-affinity indicators comprises performing an iterative user-guided analysis, wherein the iterative user-guided analysis comprises iteratively (i) performing the presenting the affinity rules and anti-affinity rules to a user, (ii) receiving input from a user changing a priority of at least one of: the affinity rules and the anti-affinity rules, and (iii) performing the modifying the affinity rules and anti-affinity rules based upon the input from the user.

16. The computer program product of claim 11 , wherein the identifying affinity indicators comprises identifying interactions between application portions from service interactions and network configurations.

17. The computer program product of claim 11 , wherein the identifying affinity indicators and identifying anti-affinity indicators comprises identifying resource requirements of the portions that indicate one of: no resource interference between application portions and a resource interference between application portions.

18. The computer program product of claim 11 , wherein the identifying anti-affinity indicators comprises identifying a number of instances of a given portion to be deployed on the container-based environment and identifying fault tolerance requirements across the number of instances.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2020
From: JAYACHANDRAN, PRAVEEN; SINGHEE, AMITH; SREE PRAKASH, ASHOK PON KUMAR; GOVINDARAJAN, CHANDER; RAMAKRISHNA, VENKATRAMAN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 054549/0388 →