KR20170045981A - 소프트웨어를 포함한 시스템 및 이의 무중단 업그레이드 방법 - Google Patents
소프트웨어를 포함한 시스템 및 이의 무중단 업그레이드 방법 Download PDFInfo
- Publication number
- KR20170045981A KR20170045981A KR1020150146204A KR20150146204A KR20170045981A KR 20170045981 A KR20170045981 A KR 20170045981A KR 1020150146204 A KR1020150146204 A KR 1020150146204A KR 20150146204 A KR20150146204 A KR 20150146204A KR 20170045981 A KR20170045981 A KR 20170045981A
- Authority
- KR
- South Korea
- Prior art keywords
- dynamic module
- block
- dynamic
- task
- service
- Prior art date
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
본 발명의 실시예는 서비스의 중단없이 실행중인 소프트웨어를 업그레이드할 수 있도록 한 소프트웨어를 포함한 시스템에 관한 것이다.
본 발명의 소프트웨어를 포함한 시스템은 메모리에 로드되며, 외부와 메시지 기반의 통신이 가능한 태스크 블록과; 상기 메모리에 로드되며, 상기 태스크 블록과 심볼링 링크되어 상기 메시지에 대응한 서비스를 제공하는 동적모듈 블록을 포함한다.
본 발명의 소프트웨어를 포함한 시스템은 메모리에 로드되며, 외부와 메시지 기반의 통신이 가능한 태스크 블록과; 상기 메모리에 로드되며, 상기 태스크 블록과 심볼링 링크되어 상기 메시지에 대응한 서비스를 제공하는 동적모듈 블록을 포함한다.
Description
본 발명의 실시예는 서비스의 중단없이 실행중인 소프트웨어를 업그레이드할 수 있도록 한 소프트웨어를 포함한 시스템 및 이의 무중단 업그레이드 방법에 관한 것이다.
미션 크리티컬 시스템(Mission Critical System)은 인터넷 시스템, 전화 시스템, 은행 시스템, 교통 시스템(예를 들어, 철도 시스템 및 항공기 시스템 등) 등과 같이 단 한 번이라도 다운되면 사회적 및 금전적으로 엄청난 영향을 미치는 시스템을 의미한다.
이와 같은, 미션 크리티컬 시스템은 고 가용성(HA : High Availability) 기능을 필수적으로 탑재하여 최대한 시스템에서 장애가 발생하지 않도록 유지하며, 장애가 발생한다 하더라도 서비스가 계속 유지되는 상태에서 곧바로 복구할 수 있는 기능을 제공한다.
시스템의 가용성은 서비스 시간 대비 장애발생 시간의 비율로 표현된다. 이상적으로, 시스템의 가용성은 100%를 달성해야 하지만 아무리 견고한 시스템이라도 장애가 발생할 수 있는 확률이 존재한다.
서비스의 연속성을 저해하는 요인은 크게 계획된 다운타임(Planned Downtime)과 계획되지 않은 다운타임(Unplanned Downtime)으로 나누어진다. 계획된 다운타임에는 시스템 변경, 신규 시스템 도입, 데이터 백업 및 소프트웨어 변경 등을 포함한다. 계획되지 않은 다운타임은 서비스 시스템에 발생하는 장애로, 장애의 종류와 정도에 따라 복구에 소요되는 시간이 달라진다.
한편, 계획된 다운타임 기간 중 소프트웨어의 변경으로 인한 다운타임을 제거하기 위하여 시스템을 이중화하는 방법이 사용되고 있다. 시스템을 이중화하기 위해서는 동일한 서비스를 제공하는 제 1시스템 및 제 2시스템이 구비된다. 제 1시스템 및 제 2시스템은 교번적으로 운용 및 휴면상태를 반복한다.
일례로, 제 1시스템이 운용상태, 제 2시스템이 휴면상태로 설정될 수 있다. 그리고, 서비스 운용중에 소프트웨어의 오류, 기능 추가 등으로 인하여 소프트웨어를 변경해야 할 경우, 아래의 절차를 이용하여 소프트웨어를 변경한다.
먼저, 휴면상태에 있는 제 2시스템의 소프트웨어를 업그레이드 한다. 그리고, 제 1시스템에서 운용되고 있는 데이터 등을 업그레이드된 제 2시스템의 소프트웨어에 동기화시킨다.(동기화 방법은 다양하게 설정될 수 있다.)
데이터가 동기화된 후 제 2시스템은 운용상태로 설정되며, 필요한 서비스를 제공한다. 그리고, 제 1시스템은 휴면상태로 설정되며, 휴면상태에서 소프트웨어를 업그레이드한다.
한편, 상기와 같이 소프트웨어를 업그레이드하기 위해서는 시스템을 두 배로 증설해야한다. 또한, 이중화된 두 시스템의 소프트웨어를 동기화하기 쉽지 않고, 이에 대응하여 소프트웨어의 복잡도가 증가된다. 따라서, 하나의 시스템에서 서비스를 중단하지 않으면서 소프트웨어를 업그레이드할 수 있는 방법이 요구되고 있다.
따라서, 본 발명은 하나의 시스템에서 서비스의 중단없이 실행중인 소프트웨어를 업그레이드할 수 있도록 한 소프트웨어를 포함한 시스템 및 이의 무중단 업그레이드 방법을 제공하는 것이다.
본 발명의 소프트웨어를 포함한 시스템은 메모리에 로드되며, 외부와 메시지 기반의 통신이 가능한 태스크 블록과; 상기 메모리에 로드되며, 상기 태스크 블록과 심볼링 링크되어 상기 메시지에 대응한 서비스를 제공하는 동적모듈 블록을 포함한다.
실시 예에 의한, 상기 동적모듈 블록은 상기 태스크 블록의 중단없이 교체 가능하다.
실시 예에 의한, 상기 태스크 블록은 상기 메시지가 저장되는 메시지 큐를 포함하는 태스크 관리자 블록과, 상기 메시지에 대응한 함수를 호출하기 위한 동적모듈 인터페이스 레퍼런스 및 상기 동적모듈 블록의 서비스에 대응하여 변경 및 생성되는 동적모듈 데이터를 포함하는 동적모듈 관리자 블록을 구비한다.
실시 예에 의한, 상기 동적모듈 블록은 상기 서비스를 제공하기 위하여 서비스 기능 함수들을 포함하는 서비스 기능모듈과, 상기 서비스 기능 함수들이 등록되며 상기 동적모듈 인터페이스 레퍼런스와 심볼링 링크되는 동적모듈 인터페이스 및 상기 동적모듈 데이터와 심볼링 링크되는 동적모듈 데이터 레퍼런스를 포함하는 동적모듈 래퍼 블록을 구비한다.
본 발명의 실시예에 의한 태스크 블록 및 제 1동적모듈 블록을 포함하는 소프트웨어의 무중단 업그레이드 방법은, 제 1동적모듈 블록을 업그레이드하기 위한 제 2동적모듈 블록을 하드 디스크에 저장하는 단계와, 상기 태스크 블록에 업그레이드를 요청하는 단계와, 상기 태스크 블록에서 상기 제 1동적모듈 블록을 메모리에서 언로드시키는 단계와, 상기 태스크 블록에서 상기 제 2동적모듈 블록을 상기 메모리에 로드시키는 단계와, 상기 태스크 블록과 상기 제 2동적모듈 블록을 연결하는 단계를 포함한다.
실시 예에 의한, 상기 제 2동적모듈 블록을 연결하는 단계는 상기 제 2동적모듈 블록에 포함되며, 함수들이 등록된 동적모듈 인터페이스를 상기 태스크 블록에 포함된 동적모듈 인터페이스 레퍼런스에 심볼링 링크하는 단계와; 상기 태스크 블록에 저장된 동적모듈 데이터를 상기 제 2동적모듈 블록에 포함된 동적모듈 데이터 레퍼런스와 심볼링 링크하는 단계를 포함한다.
실시 예에 의한, 상기 제 2동적모듈 블록을 연결하는 단계는 상기 제 2동적모듈 블록에 포함된 서비스 기능모듈에서 상기 동적모듈 데이터를 이용하여 소정의 서비스를 수행하는 단계를 더 포함한다.
실시 예에 의한, 상기 서비스 기능모듈의 서비스에 대응하여 상기 동적모듈 데이터가 갱신된다.
본 발명의 실시예에 의한 소프트웨어를 포함한 시스템 및 이의 무중단 업그레이드 방법에 의하면, 프로세스를 태스크 블록과 동적모듈 블록으로 나누어 구동한다. 프로그램 업그레이드시 동적모듈 블록을 교체하고, 태스크 블록에 포함된 데이터를 업그레이드 된 동적모듈 블록에 링크함으로써 서비스 중단없이 프로그램을 업그레이드 할 수 있다.
도 1은 본 발명의 실시예에 의한 소프트웨어의 프로세스 구조를 나타내는 도면이다.
도 2는 도 1에 도시된 동적모듈 관리자 블록과 동적모듈 래퍼 블록의 연결 구조를 나타내는 도면이다.
도 3은 본 발명의 소프트웨어 프로세스의 초기 실행 절차를 나타내는 도면이다.
도 4는 본 발명의 실시예에 의한 소프트웨어 프로세스의 메시지 처리 절차를 나타내는 도면이다.
도 5는 소프트웨어의 업그레이드 방법을 나타내는 도면이다.
도 2는 도 1에 도시된 동적모듈 관리자 블록과 동적모듈 래퍼 블록의 연결 구조를 나타내는 도면이다.
도 3은 본 발명의 소프트웨어 프로세스의 초기 실행 절차를 나타내는 도면이다.
도 4는 본 발명의 실시예에 의한 소프트웨어 프로세스의 메시지 처리 절차를 나타내는 도면이다.
도 5는 소프트웨어의 업그레이드 방법을 나타내는 도면이다.
이하 첨부한 도면을 참고하여 본 발명의 실시예 및 그 밖에 당업자가 본 발명의 내용을 쉽게 이해하기 위하여 필요한 사항에 대하여 상세히 기재한다. 다만, 본 발명은 청구범위에 기재된 범위 안에서 여러 가지 상이한 형태로 구현될 수 있으므로 하기에 설명하는 실시예는 표현 여부에 불구하고 예시적인 것에 불과하다.
즉, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있다. 또한, 도면에서 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 참조번호 및 부호로 나타내고 있음에 유의해야 한다.
도 1은 본 발명의 실시예에 의한 소프트웨어의 프로세스 구조를 나타내는 도면이다. 본 발명의 소프트웨어는 소정의 서비스를 제공하는 시스템에 설치되며, 운영체제(OS : Linux, Unix, Windows 등)에 의하여 프로세스(Process)로 동작한다. 프로세스 간 통신은 운영체제에서 제공하는 소켓(Socket), 메시지 큐(Message Queue) 등과 같은 메시지 기반의 통신방식을 사용한다.(도 1에서는 실시예로서 메시지 큐를 도시하기로 한다.) 이와 같은 본 발명의 소프트웨어 프로세스는 그 구조에 의하여 서비스 중단없이 실행중에 업그레이드할 수 있으며, 업그레이드를 수행하더라도 통신하고 있는 다른 프로세스에 영향을 주지 않는다.
도 1을 참조하면, 본 발명의 소프트웨어의 프로세스는 태스크 블록(10) 및 동적모듈 블록(30)으로 구성된다.
태스크 블록(10)은 소프트웨어가 실행되면 프로세스로서 메모리에 상주한다. 이와 같은 태스크 블록(10)은 프로세스가 종료될 때까지 메모리에 상주하면서 구동된다. 태스크 블록(10)은 태스크 관리자 블록(12) 및 동적모듈 관리자 블록(16)을 포함한다.
태스크 관리자 블록(12)은 다른 프로세스와의 메시지 통신을 관리한다. 이를 위하여, 태스크 관리자 블록(12)은 메시지 큐(14)를 포함한다. 메시지 큐(14)는 외부로부터의 요청 메시지를 저장하고, 저장된 요청 메시지가 순차적으로 처리되도록 제어한다.
동적모듈 관리자 블록(16)은 태스크 블록(10)과 동적모듈 블록(30)간 연결을 관리한다. 이를 위하여, 동적모듈 관리자 블록(16)은 동적모듈 인터페이스 레퍼런스(18) 및 동적모듈 데이터(20)를 포함한다.
동적모듈 인터페이스 레퍼런스(18)는 메시지 큐(14)로부터의 요청 메시지에 대응하여 소정의 서비스가 수행되도록 동적모듈 블록(30)을 제어한다. 동적모듈 데이터(20)는 동적모듈 블록(30)에서 제공되는 서비스에 대응하여 생성 및/또는 변경되는 데이터로써, 동적모듈 관리자 블록(16)에 저장된다.
동적모듈 블록(30)은 프로세스 실행시, 주요 서비스 기능이 구현되는 블록이다. 이를 위하여, 동적모듈 블록(30)은 동적모듈 래퍼 블록(32)과 서비스 기능모듈(38)을 포함한다.
동적모듈 래퍼 블록(32)은 동적모듈 인터페이스 레퍼런스(18)와 연동되며, 서비스 기능모듈(38)에서 소정의 서비스가 제공되도록 한다. 이를 위하여, 동적모듈 래퍼 블록(32)은 동적모듈 인터페이스(34) 및 동적모듈 데이터 레퍼런스(36)를 포함한다.
동적모듈 인터페이스(34)는 동적모듈 인터페이스 레퍼런스(18)와 심볼링 링크된다.
동적모듈 데이터 레퍼런스(36)는 동적모듈 데이터(20)와 심볼링 링크되며, 서비스 기능모듈(38)로부터 생성 및/또는 변경되는 데이터가 동적모듈 데이터(20)로 저장되도록 한다.
서비스 기능모듈(38)은 서비스를 제공하기 위한 서비스 기능함수들을 포함하며, 프로세스의 모든 기능 서비스를 수행한다.
추가적으로, 주요 서비스 기능이 구현되는 동적모듈 블록(30)은 프로세스 실행시 필요에 따라서 업그레이드(또는 교환)될 수 있다. 이때, 태스크 블록(10)은 실행상태를 유지하고, 이에 따라 동적모듈 블록(30)의 업그레이드가 통신하고 있는 다른 프로세스에 영항을 주지 않는다.
도 2는 도 1에 도시된 동적모듈 관리자 블록과 동적모듈 래퍼 블록의 연결 구조를 나타내는 도면이다.
도 2를 참조하면, 동적모듈 래퍼 블록(32)에 포함된 동적모듈 인터페이스(34)에는 함수들(Msg())이 등록된다. 일례로, 동적모듈 인터페이스(34)에는 서비스 기능모듈(38)에 저장되는 서비스 기능함수들이 소정의 기준에 대응하여 분류되어 등록될 수 있다.
동적모듈 인터페이스 레퍼런스(18)는 동적모듈 인터페이스(34)를 직접적으로 참조한다. 이 경우, 동적모듈 인터페이스 레퍼런스(18)는 서비스 함수들(Msg())을 참조(*Msg())할 수 있다.(*Msg() → Msg()) 다시 말하여, 동적모듈 인터페이스 레퍼런스(18)는 동적모듈 인터페이스(34)와 링크되고, 이에 따라 소정의 서비스가 행해지도록 서비스 기능함수들을 호출할 수 있다.
동적모듈 관리자(16)에 포함된 동적모듈 데이터(Data : 20)는 서비스 기능모듈(38)의 서비스 동작에 대응하여 생성되거나 변경되는 데이터를 의미한다. 즉, 본 발명에서 서비스 기능모듈(38)에 의하여 생성된 데이터는 소프트웨어의 업그레이드와 무관하게 로드상태를 유지하는 동적모듈 관리자 블록(16)에 저장된다.
동적모듈 데이터 레퍼런스(*Data : 36)는 동적모듈 데이터(20)를 직접적으로 참조한다.(즉, *Data → Data) 즉, 동적모듈 데이터 레퍼런스(36)는 동적모듈 데이터(20)와 링크된다. 따라서, 서비스 기능모듈(38)에서 동적모듈 데이터 레퍼런스(36)를 제어하는 경우, 동적모듈 데이터(20)를 변경할 수 있다.
한편, 필요에 따라서 동적모듈 블록(30)이 업그레이드되는 경우 동적모듈 인터페이스 레퍼런스(18)와 동적모듈 인터페이스(34), 동적모듈 데이터 레퍼런스(36)와 동적모듈 데이터(20)의 상호참조를 재설정하면 태스크 블록(10)과 업그레이드된 동적모듈 블럭(30)이 안정적으로 연결될 수 있다. 또한, 동적모듈 블록(30)이 업그레이드 및/또는 교환되더라도 동적 모듈 데이터(20)를 그대로 사용할 수 있기 때문에 시스템은 중단없이 서비스를 제공할 수 있다.
즉, 본 발명의 소프트웨어의 프로세스는 태스크 블록(10) 및 동적모듈 블록(30)을 포함하며, 프로세스의 종료 없이 동적모듈 블록(30)만을 수정 및/또는 교환할 수 있다. 다시 말하여, 본 발명에서는 하나의 시스템에서 서비스를 중단하지 않으면서 소프트웨어를 업그레이드할 수 있다.
도 3은 본 발명의 소프트웨어 프로세스의 초기 실행 절차를 나타내는 도면이다.
도 3을 참조하여 초기 실행 절차를 설명하면 아래와 같다.
<소프트웨어 실행 : S300>
먼저, 사용자 등에 의하여 소프트웨어가 실행된다. 소프트웨어가 실행되면 태스크 블록(10)이 프로세스의 형태로 시스템의 메모리에 로드된다.
<동적모듈 로드 : S302>
태스크 블록(10)이 메모리에 로드된 후 동적모듈 관리자 블록(16)은 동적 라이브러리 형태로 구현된 동적모듈 블록(30)을 메모리에 로드시킨다.
<심볼링크 : S304>
동적모듈 블록(30)이 메모리에 로드된 후 동적모듈 관리자 블록(16)은 동적모듈 인터페이스(34)에 포함된 서비스 함수들(Msg())의 심볼을 링크한다. 이 경우, 태스크 블록(10)에 포함된 동적모듈 인터페이스 레퍼런스(18)는 동적모듈 인터페이스(34)의 함수들(Msg())을 참조(*Msg())할 수 있다.(즉, *Msg() → Msg())
<데이터 링크 : S306>
함수들(Msg())의 심볼이 링크된 후 동적모듈 관리자 블록(16)은 동적모듈 데이터(20)의 심볼을 동적모듈 래퍼 블록(32)으로 전달한다. 이때, 동적모듈 래퍼 블록(32)은 동적모듈 데이터(20)를 동적모듈 데이터 레퍼런스(36)로 링크한다.(즉, *Data → Data)
상기의 S300 내지 S306 단계를 거치면, 소프트웨어의 프로세스는 외부 메시지를 받을 수 있으며, 미리 설정된 서비스 기능을 수행할 수 있는 상태로 설정된다.
도 4는 본 발명의 실시예에 의한 소프트웨어 프로세스의 메시지 처리 절차를 나타내는 도면이다.
도 4를 참조하여 프로세스의 메시지 처리 절차를 설명하면 아래와 같다.
<외부 요청 입력 : S400>
먼저, 외부로부터 특정 동작에 대응하는 적어도 하나의 요청 메시지가 입력된다. 외부로부터 입력된 적어도 하나의 요청 메시지는 태스크 관리자 블록(12)의 메시지 큐(14)에 저장된다. 태스크 관리자 블록(12)은 메시지 큐(14)에 저장된 요청 메시지가 순차적으로 처리되도록 제어한다.
<처리 요청 : S402, S404>
태스크 관리자 블록(12)은 메시지 큐(14)에 저장된 요청 메시지에 대응하여 동적모듈 인터페이스 레퍼런스(18)로 처리 함수의 호출을 요청한다. 여기서, 동적모듈 인터페이스 레퍼런스(18) 및 동적모듈 인터페이스(34)가 심볼링 링크되어 있기 때문에 S402 단계에서의 함수 호출 요청은 동적모듈 인터페이스(34)로 곧바로 전달된다.
<서비스 처리 : S406>
동적모듈 인터페이스(34)에서 호출된 함수는 서비스 기능모듈(38)의 서비스 기능함수를 호출한다. 그러면, 서비스 기능모듈(38)은 호출된 서비스 기능함수를 이용하여 서비스 기능을 수행한다.
<처리결과 저장 : S408, S410>
서비스 기능모듈(38)에 포함된 서비스 기능함수는 서비스 동작을 수행하고, 수행결과에 대응하는 데이터를 동적모듈 데이터 레퍼런스(36)에 저장한다. 이때, 동적모듈 데이터 레퍼런스(36)는 동적모듈 데이터(20)와 심볼링 링크되어 있기 때문에, 수행결과에 대응하는 데이터는 자동적으로 동적모듈 데이터(20)로 저장된다.
도 5는 소프트웨어의 업그레이드 방법을 나타내는 도면이다.
도 5를 참조하여 업그레이드 방법을 설명하면 아래와 같다.
<업그레이드 소프트웨어 저장 : S500>
먼저, 사용자는 소정의 기능이 업그레이드되도록 새로운 소프트웨어의 동적모듈을 작성(프로그래밍)한다. 이후, 사용자는 새로운 소프트웨어의 동적모듈을 하드디스크(50)에 저장한다.
<업그레이드 요청 : S502>
새로운 소프트웨어가 하드 디스크(50)에 저장된 후 사용자는 실행되고 있는 프로세스, 즉 태스크 블록(10)으로 새로운 소프트웨어의 업그레이드를 요청하는 메시지를 송부한다.
<처리 요청 : S504>
업그레이드 요청 메시지는 메시지 큐(14)에 저장된다. 이후, 태스크 관리자(12)는 요청 메시지를 동적모듈 관리자 블록(16)으로 전달한다.
<기존 동적모듈 블록 언로드 : S506>
요청 메시지를 받은 동적모듈 관리자 블록(16)은 기존 동적모듈 블록(30)의 동작을 중단시킴과 동시에 메모리에서 언로드시킨다.
<새로운 동적모듈 블록 로드 : S508>
이후, 동적모듈 관리자 블록(16)은 하드 디스크(50)에 저장된 새로운 소프트웨어의 동적모듈 블록(30')을 메모리에 로드한다.
<새로운 동적모듈 링크 : S510, S512>
이후, 동적모듈 인터페이스 레퍼런스(18)는 새로운 동적모듈 인터페이스(34')와 심볼링 링크된다. 마찬가지로, 동적모듈 데이터(20)는 새로운 동적모듈 데이터 레퍼런스(36')와 심볼링 링크된다.
<동기화 : S514, S516>
이후, 새로운 동적모듈 인터페이스(34')는 서비스 기능모듈(38')로 동적모듈 데이터(20)의 동기화를 요청한다. 그러면, 서비스 기능모듈(38')은 동적모듈 데이터 레퍼런스(36')를 참조하여 동적모듈 데이터(20)를 동기화하고, 동기화된 동적모듈 데이터(20)를 이용하여 서비스 기능을 수행한다. 그러면, 서비스 기능모듈(38')의 서비스에 대응하여 동적모듈 데이터(20)가 갱신(update)된다.
본 발명에서는 상술한 S500 단계 내지 S516 단계에 의하여 태스크 모듈(10)을 중단시키지 않으면서, 동적모듈 블록(30')을 업그레이드할 수 있다. 또한, 본 발명에서는 서비스를 위한 동적모듈 데이터(20)를 태스크 블록에 저장한다. 이 경우, 동적모듈 블록(30')이 업그레이드되어도 동일한 동적모듈 데이터(20)를 이용하여 서비스를 수행할 수 있고, 이에 따라 동작의 신뢰성을 확보할 수 있다.
상술한 바와 같이 본 발명에서는 소프트웨어를 중단시키지 않고, 서비스를 담당하는 동적모듈을 업그레이드 할 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 지식을 가진 자라면 본 발명의 기술 사상의 범위 내에서 다양한 변형예가 가능함을 이해할 수 있을 것이다.
전술한 발명에 대한 권리범위는 이하의 특허청구범위에서 정해지는 것으로써, 명세서 본문의 기재에 구속되지 않으며, 청구범위의 균등 범위에 속하는 변형과 변경은 모두 본 발명의 범위에 속할 것이다.
10 : 태스크 블록
12 : 태스크 관리자 블록
14 : 메시지 큐 16 : 동적모듈 관리자 블록
18 : 동적모듈 인터페이스 레퍼런스 20 : 동적모듈 데이터
30 : 동적모듈 블록 32 : 동적모듈 래퍼 블록
34 : 동적모듈 인터페이스 36 : 동적모듈 데이터 래퍼런스
38 : 서비스 기능모듈 50 : 하드 디스크
14 : 메시지 큐 16 : 동적모듈 관리자 블록
18 : 동적모듈 인터페이스 레퍼런스 20 : 동적모듈 데이터
30 : 동적모듈 블록 32 : 동적모듈 래퍼 블록
34 : 동적모듈 인터페이스 36 : 동적모듈 데이터 래퍼런스
38 : 서비스 기능모듈 50 : 하드 디스크
Claims (8)
- 메모리에 로드되며, 외부와 메시지 기반의 통신이 가능한 태스크 블록과;
상기 메모리에 로드되며, 상기 태스크 블록과 심볼링 링크되어 상기 메시지에 대응한 서비스를 제공하는 동적모듈 블록을 포함하는 것을 특징으로 하는 소프트웨어를 포함한 시스템. - 제 1항에 있어서,
상기 동적모듈 블록은 상기 태스크 블록의 중단없이 교체 가능한 것을 특징으로 하는 소프트웨어를 포함한 시스템. - 제 1항에 있어서,
상기 태스크 블록은
상기 메시지가 저장되는 메시지 큐를 포함하는 태스크 관리자 블록과,
상기 메시지에 대응한 함수를 호출하기 위한 동적모듈 인터페이스 레퍼런스 및 상기 동적모듈 블록의 서비스에 대응하여 변경 및 생성되는 동적모듈 데이터를 포함하는 동적모듈 관리자 블록을 구비하는 것을 특징으로 하는 소프트웨어를 포함한 시스템. - 제 3항에 있어서,
상기 동적모듈 블록은
상기 서비스를 제공하기 위하여 서비스 기능 함수들을 포함하는 서비스 기능모듈과,
상기 서비스 기능 함수들이 등록되며 상기 동적모듈 인터페이스 레퍼런스와 심볼링 링크되는 동적모듈 인터페이스 및 상기 동적모듈 데이터와 심볼링 링크되는 동적모듈 데이터 레퍼런스를 포함하는 동적모듈 래퍼 블록을 구비하는 것을 특징으로 하는 소프트웨어를 포함한 시스템. - 태스크 블록 및 제 1동적모듈 블록을 포함하는 소프트웨어의 무중단 업그레이드 방법에 있어서,
제 1동적모듈 블록을 업그레이드하기 위한 제 2동적모듈 블록을 하드 디스크에 저장하는 단계와,
상기 태스크 블록에 업그레이드를 요청하는 단계와,
상기 태스크 블록에서 상기 제 1동적모듈 블록을 메모리에서 언로드시키는 단계와,
상기 태스크 블록에서 상기 제 2동적모듈 블록을 상기 메모리에 로드시키는 단계와,
상기 태스크 블록과 상기 제 2동적모듈 블록을 연결하는 단계를 포함하는 것을 특징으로 하는 소프트웨어의 무중단 업그레이드 방법. - 제 5항에 있어서,
상기 제 2동적모듈 블록을 연결하는 단계는
상기 제 2동적모듈 블록에 포함되며, 함수들이 등록된 동적모듈 인터페이스를 상기 태스크 블록에 포함된 동적모듈 인터페이스 레퍼런스에 심볼링 링크하는 단계와;
상기 태스크 블록에 저장된 동적모듈 데이터를 상기 제 2동적모듈 블록에 포함된 동적모듈 데이터 레퍼런스와 심볼링 링크하는 단계를 포함하는 것을 특징으로 하는 소프트웨어의 무중단 업그레이드 방법. - 제 6항에 있어서,
상기 제 2동적모듈 블록을 연결하는 단계는
상기 제 2동적모듈 블록에 포함된 서비스 기능모듈에서 상기 동적모듈 데이터를 이용하여 소정의 서비스를 수행하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어의 무중단 업그레이드 방법. - 제 7항에 있어서,
상기 서비스 기능모듈의 서비스에 대응하여 상기 동적모듈 데이터가 갱신되는 것을 특징으로 하는 소프트웨어의 무중단 업그레이드 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150146204A KR20170045981A (ko) | 2015-10-20 | 2015-10-20 | 소프트웨어를 포함한 시스템 및 이의 무중단 업그레이드 방법 |
US15/163,875 US20170109156A1 (en) | 2015-10-20 | 2016-05-25 | System including software and non-stop upgrading method of running software |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150146204A KR20170045981A (ko) | 2015-10-20 | 2015-10-20 | 소프트웨어를 포함한 시스템 및 이의 무중단 업그레이드 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170045981A true KR20170045981A (ko) | 2017-04-28 |
Family
ID=58522967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150146204A KR20170045981A (ko) | 2015-10-20 | 2015-10-20 | 소프트웨어를 포함한 시스템 및 이의 무중단 업그레이드 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170109156A1 (ko) |
KR (1) | KR20170045981A (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10037203B1 (en) * | 2016-07-28 | 2018-07-31 | National Technology & Engineering Solutions Of Sandia, Llc | Real-time software upgrade |
CN107748668B (zh) * | 2017-11-27 | 2021-02-02 | 奇安信科技集团股份有限公司 | 一种应用程序升级的方法及装置 |
US12099834B2 (en) * | 2021-07-23 | 2024-09-24 | Red Hat, Inc. | Patching software dependencies using external metadata |
CN117055849A (zh) * | 2023-03-14 | 2023-11-14 | 芜湖市桀蒲网络科技有限公司 | 一种基于大数据的软件模块划分方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006146679A (ja) * | 2004-11-22 | 2006-06-08 | Hitachi Ltd | 情報処理装置の制御方法、情報処理装置、及びプログラム |
JP2009093311A (ja) * | 2007-10-05 | 2009-04-30 | Oki Semiconductor Co Ltd | ノンストッププログラムシステムおよびそのメモリ断片化回避方法 |
-
2015
- 2015-10-20 KR KR1020150146204A patent/KR20170045981A/ko unknown
-
2016
- 2016-05-25 US US15/163,875 patent/US20170109156A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20170109156A1 (en) | 2017-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468717B (zh) | 数据库操作方法和装置 | |
US8108853B2 (en) | Apparatus and method for allowing a fail-back to a prior software release in a process control system | |
US20070169083A1 (en) | Method for secure in-service software upgrades | |
CN110597910A (zh) | 一种异地数据同步方法、装置和系统 | |
CN105159795A (zh) | 数据同步方法、装置和系统 | |
KR20170045981A (ko) | 소프트웨어를 포함한 시스템 및 이의 무중단 업그레이드 방법 | |
CN112477919B (zh) | 一种适用于列车控制系统平台的动态冗余备份方法及系统 | |
US20120331335A1 (en) | High availability database systems and methods | |
CN113467873A (zh) | 虚拟机的调度方法、装置、电子设备及存储介质 | |
CN115113591A (zh) | 使用控制软件的虚拟化实例控制工业过程 | |
CN112929438B (zh) | 一种双站点分布式数据库的业务处理方法及装置 | |
CN107465756B (zh) | 一种服务请求处理的方法和装置 | |
CN115543393B (zh) | 升级方法、电子设备及存储介质 | |
JP5387767B2 (ja) | 実行中のプログラムの更新技術 | |
CN116193481A (zh) | 一种5g核心网处理方法、装置、设备及介质 | |
US9860112B2 (en) | Techniques for synchronizing operations between regions when a network connection fails | |
US10416990B2 (en) | System and method for seamlessly patching shared libraries in server environment | |
JP2007334668A (ja) | メモリダンプ方法、クラスタシステム、それを構成するノードおよびプログラム | |
WO2017047065A1 (ja) | クラスタシステム、情報処理装置、クラスタシステムの同期方法、及びプログラムを格納する記憶媒体 | |
CN104503811A (zh) | 基于单存储区的通信设备升级方法及系统 | |
CN111142921A (zh) | 软件升级方法及装置 | |
JP2009003631A (ja) | 冗長構成サーバシステム、同期処理方法、及びプログラム | |
CN114513524B (zh) | 一种资源同步方法、装置、电子设备和存储介质 | |
KR101907418B1 (ko) | 동적 모듈, 이를 구비한 동적 업그레이드 장치 및 방법 | |
CN117201303A (zh) | 一种动态链接库的更新方法、装置及设备 |