KR20170033121A - 서비스 처리 방법 및 이를 구현하는 전자 장치 - Google Patents

서비스 처리 방법 및 이를 구현하는 전자 장치 Download PDF

Info

Publication number
KR20170033121A
KR20170033121A KR1020150131047A KR20150131047A KR20170033121A KR 20170033121 A KR20170033121 A KR 20170033121A KR 1020150131047 A KR1020150131047 A KR 1020150131047A KR 20150131047 A KR20150131047 A KR 20150131047A KR 20170033121 A KR20170033121 A KR 20170033121A
Authority
KR
South Korea
Prior art keywords
time
server
reservation
information
update
Prior art date
Application number
KR1020150131047A
Other languages
English (en)
Inventor
홍재목
김현승
이남걸
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150131047A priority Critical patent/KR20170033121A/ko
Priority to US15/267,587 priority patent/US20170078160A1/en
Publication of KR20170033121A publication Critical patent/KR20170033121A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • H04W72/1252
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/08Load balancing or load distribution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W72/00Local resource management
    • H04W72/02Selection of wireless resources by user or terminal
    • H04W72/1242

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Telephonic Communication Services (AREA)
  • Telephone Function (AREA)

Abstract

다양한 실시예는 통신 인터페이스, 복수의 외부 장치들과 통신을 수행할 예약 시간을 저장하도록 설정된 메모리; 및 상기 통신 인터페이스 및 상기 메모리와 기능적으로 연결된 프로세서를 포함하고, 상기 프로세서는, 상기 통신 인터페이스를 통해 상기 복수의 외부 장치들 중 적어도 하나의 외부 장치로부터 서비스 요청을 수신하고, 상기 예약 시간 및 상기 예약 시간과 관련된 부하량에 기반하여 상기 서비스 요청과 연관된 통신 요청 시간을 결정하고, 및 상기 결정된 통신 요청 시간을 상기 통신 인터페이스를 통해 상기 적어도 하나의 외부 장치에 전송하도록 설정된 전자 장치 및 그 동작 방법을 제공한다. 또한, 다른 실시예도 가능하다.

Description

서비스 처리 방법 및 이를 구현하는 전자 장치{METHOD FOR PROCESSING SERVICE AND ELECTRONIC DEVICE FOR THE SAME}
다양한 실시예는 서비스 요청 처리 방법 및 장치에 관한 것이다.
이동통신 단말기, PDA(Personal Digital Assistant), 전자수첩, 스마트 폰, 태블릿 PC(Personal Computer), 웨어러블 디바이스(Wearable Device)와 같이 이동하면서 통신 및 개인정보 처리가 가능한 전자 장치들이 다양하게 출시되고 있다. 이러한, 전자 장치는 음성 통화, SMS(Short Message Service)/MMS(Multimedia Message Service) 등과 같은 메시지 전송, 영상통화, 전자수첩, 촬영, 이메일 송수신, 방송재생, 인터넷, 음악재생, 일정관리, 소셜 네트워크 서비스(SNS, Social Networking Service), 메신저, 사전, 게임 등의 기능과 같이 다양한 기능들을 구비하게 되었다.
전자 장치는 상태 확인 또는 업데이트를 위해 일정 시간 간격으로 서버(예: 어플리케이션 스토어 서버, 증권 서버, 이동 통신 서버, 날씨 서버 등)로 데이터를 요청할 수 있다. 데이터를 요청하는 시간은 설정된 시간(예: 매일 오전 9시)이거나, 일정 주기(예: 하루, 일주일 마다 등)일 수도 있다. 데이터 요청과 관련된 정책은 전자 장치 또는 서버에서 설정할 수 있다.
설정된 시간에 복수의 클라이언트(예: 전자 장치)들이 동시에 서버로 데이터를 요청하는 경우, 서버는 상기 설정된 시간에 과부하가 발생할 수 있다. 예를 들면, 서버에 한번에 접속 가능한 최대 가용수는 100개인데, 일시적으로 특정 시간에 150 개의 클라이언트들이 서버로 데이터를 요청할 수 있다. 이 경우, 데이터를 요청한 클라이언트의 개수가 최대 가용수를 초과하기 때문에 서버에서는 과부하가 발생할 수 있다. 이러한 문제점을 해결하기 위해서, 종래에는 클라이언트의 부팅 시간을 기준으로 서버로 데이터를 요청하도록 하는 방식을 사용하고 있다. 그러나, 동일한 시간에 복수의 클라이언트들이 부팅하는 경우 상기와 마찬가지로 서버는 과부하가 발생할 수 있다.
다양한 실시예들은 전자 장치의 서비스 요청에 대해 처리할 때 서버의 가용한 시간에 기반하여 다음 업데이트 시간을 결정함으로써, 전자 장치의 서비스 요청과 관련된 서버의 부하를 분산하고 서버의 리소스를 효율적으로 활용하기 위한 방법 및 장치를 제공할 수 있다.
다양한 실시예들에 따른 전자 장치는 통신 인터페이스, 복수의 외부 장치들과 통신을 수행할 예약 시간을 저장하도록 설정된 메모리; 및 상기 통신 인터페이스 및 상기 메모리와 기능적으로 연결된 프로세서를 포함하고, 상기 프로세서는, 상기 통신 인터페이스를 통해 상기 복수의 외부 장치들 중 적어도 하나의 외부 장치로부터 서비스 요청을 수신하고, 상기 예약 시간 및 상기 예약 시간과 관련된 부하량에 기반하여 상기 서비스 요청과 연관된 통신 요청 시간을 결정하고, 및 상기 결정된 통신 요청 시간을 상기 통신 인터페이스를 통해 상기 적어도 하나의 외부 장치에 전송하도록 설정될 수 있다.
다양한 실시예들에 따른 전자 장치는 서비스 요청에 관련된 예약 정보를 저장하도록 설정된 메모리, 및 상기 메모리와 기능적으로 연결된 프로세서를 포함하고, 상기 프로세서는 서비스 요청 이벤트의 검출에 따라 상기 메모리에 상기 예약 정보가 저장되어 있는지 판단하고, 상기 판단 결과를 기반으로 상기 예약 정보에 포함된 통신 요청 시간 또는 서비스 요청 이벤트의 검출 시간에 외부 장치로 서비스 요청을 전송하도록 설정될 수 있다.
다양한 실시예들에 따른 전자 장치의 서비스 처리 방법은 복수의 외부 장치들 중 적어도 하나의 외부 장치로부터 서비스 요청을 수신하는 동작, 메모리에 저장된 예약 시간 및 상기 예약 시간과 관련된 부하량에 기반하여 상기 서비스 요청과 연관된 통신 요청 시간을 결정하는 동작, 및 상기 적어도 하나의 외부 장치로 상기 통신 요청 시간을 전송하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 복수의 전자 장치들 각각이 개별적으로 요청하는 업데이트에 대해 처리할 시간을 서버의 가용한 시간으로 재 분배함으로써 서버의 부하를 분산시킬 수 있다.
다양한 실시예들에 따르면, 복수의 전자 장치들 각각에 대한 통신 요청 시간을 서버가 한가한 시간으로 할당함으로써, 서버 리소스 효율성을 극대화할 수 있다.
다양한 실시예들에 따르면, 어플리케이션의 타입 또는 전자 장치의 우선 순위에 기반하여 통신 요청 시간을 설정함으로써, 긴급하게 처리해야 하는 전자 장치의 요청에 대한 적시성(proper timing)을 확보할 수 있다.
도 1은 다양한 실시예들에 따른 네트워크 환경 내의 전자 장치를 도시한 도면이다.
도 2는 다양한 실시예들에 따른 전자 장치의 구성을 도시한 블록도이다.
도 3은 다양한 실시예들에 따른 프로그램 모듈을 도시한 블록도이다.
도 4는 다양한 실시예들에 따른 본 발명과 종래기술을 비교한 일례를 도시한 도면이다.
도 5는 다양한 실시예들에 따른 업데이트를 처리하는 시스템의 구성도를 도시한 도면이다.
도 6은 다양한 실시예들에 따른 클라이언트와 서버에서 업데이트를 처리하는 방법을 도시한 흐름도이다.
도 7a 및 도 7b는 다양한 실시예들에 따른 업데이트를 처리하는 시스템의 다른 구성도를 도시한 도면이다.
도 8은 다양한 실시예들에 따른 클라이언트와 서버에서 업데이트를 처리하는 방법을 도시한 흐름도이다.
도 9는 다양한 실시예들에 따른 업데이트 처리 방법을 도시한 흐름도이다.
도 10은 다양한 실시예들에 따른 다양한 방식으로 업데이트를 처리하는 방법을 도시한 흐름도이다.
도 11은 다양한 실시예들에 따른 균등하게 슬롯을 선택하는 일례를 도시한 도면이다.
도 12는 다양한 실시예들에 따른 우선 순위에 기초하여 슬롯을 선택하는 일례를 도시한 도면이다.
도 13은 다양한 실시예들에 따른 업데이트 처리 방법을 도시한 흐름도이다.
이하, 본 문서의 다양한 실시예들이 첨부된 도면을 참조하여 기재된다. 실시예 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다.
본 문서에서, "A 또는 B" 또는 "A 및/또는 B 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1," "제 2," "첫째," 또는 "둘째,"등의 표현들은 해당 구성요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다.
본 문서에서, "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, 하드웨어적 또는 소프트웨어적으로 "~에 적합한," "~하는 능력을 가지는," "~하도록 변경된," "~하도록 만들어진," "~를 할 수 있는," 또는 "~하도록 설계된"과 상호 호환적으로(interchangeably) 사용될 수 있다. 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서의 다양한 실시예들에 따른 전자 장치는, 예를 들면, 스마트폰, 태블릿 PC, 이동 전화기, 영상 전화기, 전자책 리더기, 데스크탑 PC, 랩탑 PC, 넷북 컴퓨터, 워크스테이션, 서버, PDA, PMP(portable multimedia player), MP3 플레이어, 의료기기, 카메라, 또는 웨어러블 장치 중 적어도 하나를 포함할 수 있다. 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체형(예: 전자 의복), 신체 부착형(예: 스킨 패드 또는 문신), 또는 생체 이식형 회로 중 적어도 하나를 포함할 수 있다. 어떤 실시예들에서, 전자 장치는, 예를 들면, 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스, 홈 오토매이션 컨트롤 패널, 보안 컨트롤 패널, 미디어 박스(예: 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(예: XboxTM, PlayStationTM), 전자 사전, 전자 키, 캠코더, 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션 장치, 위성 항법 시스템(GNSS(global navigation satellite system)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 드론(drone), 금융 기관의 ATM, 상점의 POS(point of sales), 또는 사물 인터넷 장치 (예: 전구, 각종 센서, 스프링클러 장치, 화재 경보기, 온도조절기, 가로등, 토스터, 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다. 어떤 실시예에 따르면, 전자 장치는 가구, 건물/구조물 또는 자동차의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터, 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시예에서, 전자 장치는 플렉서블하거나, 또는 전술한 다양한 장치들 중 둘 이상의 조합일 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1은 다양한 실시예들에 따른 네트워크 환경(100) 내의 전자 장치(101)를 도시한 도면이다.
도 1을 참조하면, 전자 장치(101)는 버스(110), 프로세서(120), 메모리(130), 입출력 인터페이스(150), 디스플레이(160), 및 통신 인터페이스(170)를 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)는, 구성요소들 중 적어도 하나를 생략하거나 다른 구성요소를 추가적으로 구비할 수 있다.
버스(110)는, 예를 들면, 구성요소들(110-170)을 서로 연결하고, 구성요소들 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
프로세서(120)는, 중앙처리장치(central processing unit(CPU)), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다. 프로세서(120)는, 예를 들면, 전자 장치(101)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
메모리(130)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(130)는, 예를 들면, 전자 장치(101)의 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있다. 한 실시예에 따르면, 메모리(130)는 소프트웨어 및/또는 프로그램(140)을 저장할 수 있다. 프로그램(140)은, 예를 들면, 커널(141), 미들웨어(143), 어플리케이션 프로그래밍 인터페이스(API)(145), 및/또는 어플리케이션 프로그램(또는 "어플리케이션")(147) 등을 포함할 수 있다. 커널(141), 미들웨어(143), 또는 API(145)의 적어도 일부는, 운영 시스템으로 지칭될 수 있다. 커널(141)은, 예를 들면, 다른 프로그램들(예: 미들웨어(143), API(145), 또는 어플리케이션 프로그램(147))에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들(예: 버스(110), 프로세서(120), 또는 메모리(130) 등)을 제어 또는 관리할 수 있다. 또한, 커널(141)은 미들웨어(143), API(145), 또는 어플리케이션 프로그램(147)에서 전자 장치(101)의 개별 구성요소에 접근함으로써, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다.
미들웨어(143)는, 예를 들면, API(145) 또는 어플리케이션 프로그램(147)이 커널(141)과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다. 또한, 미들웨어(143)는 어플리케이션 프로그램(147)으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어(143)는 어플리케이션 프로그램(147) 중 적어도 하나에 전자 장치(101)의 시스템 리소스(예: 버스(110), 프로세서(120), 또는 메모리(130) 등)를 사용할 수 있는 우선 순위를 부여하고, 상기 하나 이상의 작업 요청들을 처리할 수 있다. API(145)는 어플리케이션(147)이 커널(141) 또는 미들웨어(143)에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 영상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다. 입출력 인터페이스(150)는, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치(101)의 다른 구성요소(들)에 전달하거나, 또는 전자 장치(101)의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
디스플레이(160)는, 예를 들면, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 또는 마이크로 전자기계 시스템 (MEMS) 디스플레이, 또는 전자종이(electronic paper) 디스플레이를 포함할 수 있다. 디스플레이(160)는, 예를 들면, 사용자에게 각종 콘텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 및/또는 심볼 등)을 표시할 수 있다. 디스플레이(160)는, 터치 스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스쳐, 근접, 또는 호버링 입력을 수신할 수 있다. 통신 인터페이스(170)는, 예를 들면, 전자 장치(101)와 외부 장치(예: 제 1 외부 전자 장치(102), 제 2 외부 전자 장치(104), 또는 서버(106)) 간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스(170)는 무선 통신 또는 유선 통신을 통해서 네트워크(162)에 연결되어 외부 장치(예: 제 2 외부 전자 장치(104) 또는 서버(106))와 통신할 수 있다.
무선 통신은, 예를 들면, LTE, LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband), 또는 GSM(Global System for Mobile Communications) 등 중 적어도 하나를 사용하는 셀룰러 통신을 포함할 수 있다. 한 실시예에 따르면, 무선 통신은, 예를 들면, WiFi(wireless fidelity), 블루투스, 블루투스 저전력(BLE), 지그비(Zigbee), NFC(near field communication), 자력 시큐어 트랜스미션(Magnetic Secure Transmission), 라디오 프리퀀시(RF), 또는 보디 에어리어 네트워크(BAN) 중 적어도 하나를 포함할 수 있다. 한실시예에 따르면, 무선 통신은 GNSS를 포함할 수 있다. GNSS는, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 "Beidou") 또는 Galileo, the European global satellite-based navigation system일 수 있다.
이하, 본 문서에서는, "GPS"는 "GNSS"와 상호 호환적으로 사용될 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232), 전력선 통신, 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크(162)는 텔레커뮤니케이션 네트워크, 예를 들면, 컴퓨터 네트워크(예: LAN 또는 WAN), 인터넷, 또는 텔레폰 네트워크 중 적어도 하나를 포함할 수 있다.
제 1 및 제 2 외부 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 다양한 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 다른 하나 또는 복수의 전자 장치(예: 전자 장치(102,104), 또는 서버(106)에서 실행될 수 있다. 한 실시예에 따르면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예: 전자 장치(102, 104), 또는 서버(106))에게 요청할 수 있다. 다른 전자 장치(예: 전자 장치(102, 104), 또는 서버(106))는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
도 2는 다양한 실시예에 따른 전자 장치(201)의 구성을 도시한 블록도이다.
도 2를 참조하면, 전자 장치(201)는, 예를 들면, 도 1에 도시된 전자 장치(101)의 전체 또는 일부를 포함할 수 있다. 전자 장치(201)는 하나 이상의 프로세서(예: AP)(210), 통신 모듈(220), 메모리(230), 센서 모듈(240), 입력 장치(250), 디스플레이(260), 인터페이스(270), 오디오 모듈(280), 카메라 모듈(291), 전력 관리 모듈(295), 배터리(296), 인디케이터(297), 및 모터(298) 를 포함할 수 있다.
프로세서(210)는, 예를 들면, 운영 체제 또는 응용 프로그램을 구동하여 프로세서(210)에 연결된 다수의 하드웨어 또는 소프트웨어 구성요소들을 제어할 수 있고, 각종 데이터 처리 및 연산을 수행할 수 있다. 프로세서(210)는, 예를 들면, SoC(system on chip) 로 구현될 수 있다. 한 실시예에 따르면, 프로세서(210)는 GPU(graphic processing unit) 및/또는 이미지 신호 프로세서를 더 포함할 수 있다. 프로세서(210)는 도 2에 도시된 구성요소들 중 적어도 일부(예: 셀룰러 모듈(221))를 포함할 수도 있다. 프로세서(210) 는 다른 구성요소들(예: 비휘발성 메모리) 중 적어도 하나로부터 수신된 명령 또는 데이터를 휘발성 메모리에 로드)하여 처리하고, 결과 데이터를 비휘발성 메모리에 저장할 수 있다.
통신 모듈(220)은 도 1의 통신 인터페이스(170)와 동일 또는 유사한 구성을 가질 수 있다. 통신 모듈(220)은, 예를 들면, 셀룰러 모듈(221), WiFi 모듈(223), 블루투스 모듈(225), GNSS 모듈(227), NFC 모듈(228) 및 RF 모듈(229)를 포함할 수 있다. 셀룰러 모듈(221)은, 예를 들면, 통신망을 통해서 음성 통화, 영상 통화, 문자 서비스, 또는 인터넷 서비스 등을 제공할 수 있다. 한 실시예에 따르면, 셀룰러 모듈(221)은 가입자 식별 모듈(예: SIM 카드)(224)을 이용하여 통신 네트워크 내에서 전자 장치(201)의 구별 및 인증을 수행할 수 있다. 한 실시예에 따르면, 셀룰러 모듈(221)은 프로세서(210)가 제공할 수 있는 기능 중 적어도 일부 기능을 수행할 수 있다. 한 실시예에 따르면, 셀룰러 모듈(221)은 커뮤니케이션 프로세서(CP)를 포함할 수 있다.
어떤 실시예에 따르면, 셀룰러 모듈(221), WiFi 모듈(223), 블루투스 모듈(225), GNSS 모듈(227) 또는 NFC 모듈(228) 중 적어도 일부(예: 두 개 이상)는 하나의 integrated chip(IC) 또는 IC 패키지 내에 포함될 수 있다. RF 모듈(229)은, 예를 들면, 통신 신호(예: RF 신호)를 송수신할 수 있다. RF 모듈(229)은, 예를 들면, 트랜시버, PAM(power amp module), 주파수 필터, LNA(low noise amplifier), 또는 안테나 등을 포함할 수 있다. 다른 실시예에 따르면, 셀룰러 모듈(221), WiFi 모듈(223), 블루투스 모듈(225), GNSS 모듈(227) 또는 NFC 모듈(228) 중 적어도 하나는 별개의 RF 모듈을 통하여 RF 신호를 송수신할 수 있다. 가입자 식별 모듈(224)은, 예를 들면, 가입자 식별 모듈을 포함하는 카드 또는 임베디드 SIM을 포함할 수 있으며, 고유한 식별 정보(예: ICCID(integrated circuit card identifier)) 또는 가입자 정보(예: IMSI(international mobile subscriber identity))를 포함할 수 있다.
메모리(230)(예: 메모리(130))는, 예를 들면, 내장 메모리(232) 또는 외장 메모리(234)를 포함할 수 있다. 내장 메모리(232)는, 예를 들면, 휘발성 메모리(예: DRAM, SRAM, 또는 SDRAM 등), 비휘발성 메모리(예: OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, 플래시 메모리, 하드 드라이브, 또는 솔리드 스테이트 드라이브 (SSD) 중 적어도 하나를 포함할 수 있다. 외장 메모리(234)는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD, Mini-SD, xD(extreme digital), MMC(multi-media card) 또는 메모리 스틱 등을 포함할 수 있다. 외장 메모리(234)는 다양한 인터페이스를 통하여 전자 장치(201)와 기능적으로 또는 물리적으로 연결될 수 있다.
센서 모듈(240)은, 예를 들면, 물리량을 계측하거나 전자 장치(201)의 작동 상태를 감지하여, 계측 또는 감지된 정보를 전기 신호로 변환할 수 있다. 센서 모듈(240)은, 예를 들면, 제스처 센서(240A), 자이로 센서(240B), 기압 센서(240C), 마그네틱 센서(240D), 가속도 센서(240E), 그립 센서(240F), 근접 센서(240G), 컬러(color) 센서(240H)(예: RGB(red, green, blue) 센서), 생체 센서(240I), 온/습도 센서(240J), 조도 센서(240K), 또는 UV(ultra violet) 센서(240M) 중의 적어도 하나를 포함할 수 있다. 추가적으로 또는 대체적으로, 센서 모듈(240)은, 예를 들면, 후각(e-nose) 센서, 일렉트로마이오그라피(EMG) 센서, 일렉트로엔씨팔로그램(EEG) 센서, 일렉트로카디오그램(ECG) 센서, IR(infrared) 센서, 홍채 센서 및/또는 지문 센서를 포함할 수 있다. 센서 모듈(240)은 그 안에 속한 적어도 하나 이상의 센서들을 제어하기 위한 제어 회로를 더 포함할 수 있다. 어떤 실시예에서는, 전자 장치(201)는 프로세서(210)의 일부로서 또는 별도로, 센서 모듈(240)을 제어하도록 구성된 프로세서를 더 포함하여, 프로세서(210)가 슬립(sleep) 상태에 있는 동안, 센서 모듈(240)을 제어할 수 있다.
입력 장치(250)는, 예를 들면, 터치 패널(252), (디지털) 펜 센서(254), 키(256), 또는 초음파 입력 장치(258)를 포함할 수 있다. 터치 패널(252)은, 예를 들면, 정전식, 감압식, 적외선 방식, 또는 초음파 방식 중 적어도 하나의 방식을 사용할 수 있다. 또한, 터치 패널(252)은 제어 회로를 더 포함할 수도 있다. 터치 패널(252)은 택타일 레이어(tactile layer)를 더 포함하여, 사용자에게 촉각 반응을 제공할 수 있다. (디지털) 펜 센서(254)는, 예를 들면, 터치 패널의 일부이거나, 별도의 인식용 쉬트를 포함할 수 있다. 키(256)는, 예를 들면, 물리적인 버튼, 광학식 키, 또는 키패드를 포함할 수 있다. 초음파 입력 장치(258)는 마이크(예: 마이크(288))를 통해, 입력 도구에서 발생된 초음파를 감지하여, 상기 감지된 초음파에 대응하는 데이터를 확인할 수 있다.
디스플레이(260)(예: 디스플레이(160))는 패널(262), 홀로그램 장치(264), 프로젝터(266), 및/또는 이들을 제어하기 위한 제어 회로를 포함할 수 있다. 패널(262)은, 예를 들면, 유연하게, 투명하게, 또는 착용할 수 있게 구현될 수 있다. 패널(262)은 터치 패널(252)과 하나 이상의 모듈로 구성될 수 있다. 홀로그램 장치(264)는 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 프로젝터(266)는 스크린에 빛을 투사하여 영상을 표시할 수 있다. 스크린은, 예를 들면, 전자 장치(201)의 내부 또는 외부에 위치할 수 있다.
인터페이스(270)는, 예를 들면, HDMI(272), USB(274), 광 인터페이스(optical interface)(276), 또는 D-sub(D-subminiature)(278)를 포함할 수 있다. 인터페이스(270)는, 예를 들면, 도 1에 도시된 통신 인터페이스(170)에 포함될 수 있다. 추가적으로 또는 대체적으로, 인터페이스(270)는, 예를 들면, MHL(mobile high-definition link) 인터페이스, SD카드/MMC(multi-media card) 인터페이스, 또는 IrDA(infrared data association) 규격 인터페이스를 포함할 수 있다.
오디오 모듈(280)은, 예를 들면, 소리와 전기 신호를 쌍방향으로 변환시킬 수 있다. 오디오 모듈(280)의 적어도 일부 구성요소는, 예를 들면, 도 1 에 도시된 입출력 인터페이스(145)에 포함될 수 있다. 오디오 모듈(280)은, 예를 들면, 스피커(282), 리시버(284), 이어폰(286), 또는 마이크(288) 등을 통해 입력 또는 출력되는 소리 정보를 처리할 수 있다.
카메라 모듈(291)은, 예를 들면, 정지 영상 및 동영상을 촬영할 수 있는 장치로서, 한 실시예에 따르면, 하나 이상의 이미지 센서(예: 전면 센서 또는 후면 센서), 렌즈, 이미지 시그널 프로세서(ISP), 또는 플래시(예: LED 또는 xenon lamp 등)를 포함할 수 있다. 전력 관리 모듈(295)은, 예를 들면, 전자 장치(201)의 전력을 관리할 수 있다.
한 실시예에 따르면, 전력 관리 모듈(295)은 PMIC(power management integrated circuit), 충전 IC, 또는 배터리 또는 연료 게이지를 포함할 수 있다. PMIC는, 유선 및/또는 무선 충전 방식을 가질 수 있다. 무선 충전 방식은, 예를 들면, 자기공명 방식, 자기유도 방식 또는 전자기파 방식 등을 포함하며, 무선 충전을 위한 부가적인 회로, 예를 들면, 코일 루프, 공진 회로, 또는 정류기 등을 더 포함할 수 있다. 배터리 게이지는, 예를 들면, 배터리(296)의 잔량, 충전 중 전압, 전류, 또는 온도를 측정할 수 있다. 배터리(296)는, 예를 들면, 충전식 전지 및/또는 태양 전지를 포함할 수 있다.
인디케이터(297)는 전자 장치(201) 또는 그 일부(예: 프로세서(210))의 특정 상태, 예를 들면, 부팅 상태, 메시지 상태 또는 충전 상태 등을 표시할 수 있다. 모터(298)는 전기적 신호를 기계적 진동으로 변환할 수 있고, 진동, 또는 햅틱 효과 등을 발생시킬 수 있다. 전자 장치(201)는, 예를 들면, DMB(digital multimedia broadcasting), DVB(digital video broadcasting), 또는 미디어플로(mediaFloTM) 등의 규격에 따른 미디어 데이터를 처리할 수 있는 모바일 TV 지원 장치(예: GPU)를 포함할 수 있다. 본 문서에서 기술된 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시예에서, 전자 장치(예: 전자 장치(201))는 일부 구성요소가 생략되거나, 추가적인 구성요소를 더 포함하거나, 또는, 구성요소들 중 일부가 결합되어 하나의 개체로 구성되되, 결합 이전의 해당 구성요소들의 기능을 동일하게 수행할 수 있다.
도 3은 다양한 실시예에 따른 프로그램 모듈의 구성을 도시한 블록도이다.
도 3을 참조하면, 프로그램 모듈(310)(예: 프로그램(140))은 전자 장치(예: 전자 장치(101))에 관련된 자원을 제어하는 운영 체제 및/또는 운영 체제 상에서 구동되는 다양한 어플리케이션(예: 어플리케이션 프로그램(147))을 포함할 수 있다. 운영 체제는, 예를 들면, 안드로이드(AndroidTM), iOSTM, 윈도우즈(WindowsTM), 심비안(SymbianTM), 타이젠(TizenTM), 또는 바다(Samsung bada osTM)를 포함할 수 있다. 프로그램 모듈(310)은 커널(320)(예: 커널(141)), 미들웨어(330)(예: 미들웨어(143)), (API(360)(예: API(145)), 및/또는 어플리케이션(370)(예: 어플리케이션 프로그램(147))을 포함할 수 있다. 프로그램 모듈(310)의 적어도 일부는 전자 장치 상에 프리로드 되거나, 외부 전자 장치(예: 전자 장치(102, 104), 서버(106) 등)로부터 다운로드 가능하다.
커널(320)은, 예를 들면, 시스템 리소스 매니저(321) 및/또는 디바이스 드라이버(323)를 포함할 수 있다. 시스템 리소스 매니저(321)는 시스템 리소스의 제어, 할당, 또는 회수를 수행할 수 있다. 한 실시예에 따르면, 시스템 리소스 매니저(321)는 프로세스 관리부, 메모리 관리부, 또는 파일 시스템 관리부를 포함할 수 있다. 디바이스 드라이버(323)는, 예를 들면, 디스플레이 드라이버, 카메라 드라이버, 블루투스 드라이버, 공유 메모리 드라이버, USB 드라이버, 키패드 드라이버, WiFi 드라이버, 오디오 드라이버, 또는 IPC(inter-process communication) 드라이버를 포함할 수 있다. 미들웨어(330)는, 예를 들면, 어플리케이션(370)이 공통적으로 필요로 하는 기능을 제공하거나, 어플리케이션(370)이 전자 장치 내부의 제한된 시스템 자원을 사용할 수 있도록 API(360)를 통해 다양한 기능들을 어플리케이션(370)으로 제공할 수 있다. 한 실시예에 따르면, 미들웨어(330) 는 런타임 라이브러리(335), 어플리케이션 매니저(341), 윈도우 매니저(342), 멀티미디어 매니저(343), 리소스 매니저(344), 파워 매니저(345), 데이터베이스 매니저(346), 패키지 매니저(347), 연결 매니저(348), 통지 매니저(349), 위치 매니저(350), 그래픽 매니저(351), 또는 보안 매니저(352) 중 적어도 하나를 포함할 수 있다.
런타임 라이브러리(335)는, 예를 들면, 어플리케이션(370)이 실행되는 동안에 프로그래밍 언어를 통해 새로운 기능을 추가하기 위해 컴파일러가 사용하는 라이브러리 모듈을 포함할 수 있다. 런타임 라이브러리(335)는 입출력 관리, 메모리 관리, 또는 산술 함수 처리를 수행할 수 있다. 어플리케이션 매니저(341)는, 예를 들면, 어플리케이션(370)의 생명 주기를 관리할 수 있다. 윈도우 매니저(342)는 화면에서 사용되는 GUI 자원을 관리할 수 있다. 멀티미디어 매니저(343)는 미디어 파일들의 재생에 필요한 포맷을 파악하고, 해당 포맷에 맞는 코덱을 이용하여 미디어 파일의 인코딩 또는 디코딩을 수행할 수 있다. 리소스 매니저(344)는 어플리케이션(370)의 소스 코드 또는 메모리의 공간을 관리할 수 있다. 파워 매니저(345)는, 예를 들면, 배터리의 용량 또는 전원을 관리하고, 전자 장치의 동작에 필요한 전력 정보를 제공할 수 있다. 한 실시예에 따르면, 파워 매니저(345)는 바이오스(BIOS: basic input/output system)와 연동할 수 있다. 데이터베이스 매니저(346)는, 예를 들면, 어플리케이션(370)에서 사용될 데이터베이스를 생성, 검색, 또는 변경할 수 있다. 패키지 매니저(347)는 패키지 파일의 형태로 배포되는 어플리케이션의 설치 또는 갱신을 관리할 수 있다.
연결 매니저(348)는, 예를 들면, 무선 연결을 관리할 수 있다. 통지 매니저(349)는, 예를 들면, 도착 메시지, 약속, 근접성 알림 등의 이벤트를 사용자에게 제공할 수 있다. 위치 매니저(350)는, 예를 들면, 전자 장치의 위치 정보를 관리할 수 있다. 그래픽 매니저(351)는, 예를 들면, 사용자에게 제공될 그래픽 효과 또는 이와 관련된 사용자 인터페이스를 관리할 수 있다. 보안 매니저(352)는, 예를 들면, 시스템 보안 또는 사용자 인증을 제공할 수 있다. 한 실시예에 따르면, 미들웨어(330)는 전자 장치의 음성 또는 영상 통화 기능을 관리하기 위한 통화(telephony) 매니저 또는 전술된 구성요소들의 기능들의 조합을 형성할 수 있는 하는 미들웨어 모듈을 포함할 수 있다. 한 실시예에 따르면, 미들웨어(330)는 운영 체제의 종류 별로 특화된 모듈을 제공할 수 있다. 미들웨어(330)는 동적으로 기존의 구성요소를 일부 삭제하거나 새로운 구성요소들을 추가할 수 있다. API(360)는, 예를 들면, API 프로그래밍 함수들의 집합으로, 운영 체제에 따라 다른 구성으로 제공될 수 있다. 예를 들면, 안드로이드 또는 iOS의 경우, 플랫폼 별로 하나의 API 셋을 제공할 수 있으며, 타이젠(Tizen)의 경우, 플랫폼 별로 두 개 이상의 API 셋을 제공할 수 있다.
어플리케이션(370)은, 예를 들면, 홈(371), 다이얼러(372), SMS/MMS(373), IM(instant message)(374), 브라우저(375), 카메라(376), 알람(377), 컨택트(378), 음성 다이얼(379), 이메일(380), 달력(381), 미디어 플레이어(382), 앨범(383), 와치(384), 헬스 케어(예: 운동량 또는 혈당 등을 측정), 또는 환경 정보(예: 기압, 습도, 또는 온도 정보) 제공 어플리케이션을 포함할 수 있다. 한 실시예에 따르면, 어플리케이션(370)은 전자 장치와 외부 전자 장치 사이의 정보 교환을 지원할 수 있는 정보 교환 어플리케이션을 포함할 수 있다. 정보 교환 어플리케이션은, 예를 들면, 외부 전자 장치에 특정 정보를 전달하기 위한 노티피케이션 릴레이 어플리케이션, 또는 외부 전자 장치를 관리하기 위한 장치 관리 어플리케이션을 포함할 수 있다. 예를 들면, 알림 전달 어플리케이션은 전자 장치의 다른 어플리케이션에서 발생된 알림 정보를 외부 전자 장치로 전달하거나, 또는 외부 전자 장치로부터 알림 정보를 수신하여 사용자에게 제공할 수 있다.
장치 관리 어플리케이션은, 예를 들면, 전자 장치와 통신하는 외부 전자 장치의 기능(예: 외부 전자 장치 자체(또는, 일부 구성 부품)의 턴-온/턴-오프 또는 디스플레이의 밝기(또는, 해상도) 조절), 또는 외부 전자 장치에서 동작하는 어플리케이션을 설치, 삭제, 또는 갱신할 수 있다. 한 실시예에 따르면, 어플리케이션(370)은 외부 전자 장치의 속성에 따라 지정된 어플리케이션(예: 모바일 의료 기기의 건강 관리 어플리케이션)을 포함할 수 있다. 한 실시예에 따르면, 어플리케이션(370)은 외부 전자 장치로부터 수신된 어플리케이션을 포함할 수 있다. 프로그램 모듈(310)의 적어도 일부는 소프트웨어, 펌웨어, 하드웨어(예: 프로세서(210)), 또는 이들 중 적어도 둘 이상의 조합으로 구현(예: 실행)될 수 있으며, 하나 이상의 기능을 수행하기 위한 모듈, 프로그램, 루틴, 명령어 세트 또는 프로세스를 포함할 수 있다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. "모듈"은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. "모듈"은 기계적으로 또는 전자적으로 구현될 수 있으며, 예를 들면, 어떤 동작들을 수행하는, 알려졌거나 앞으로 개발될, ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays), 또는 프로그램 가능 논리 장치를 포함할 수 있다.
다양한 실시예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는 프로그램 모듈의 형태로 컴퓨터로 판독 가능한 저장 매체(예: 메모리(130))에 저장된 명령어로 구현될 수 있다. 상기 명령어가 프로세서(예: 프로세서(120))에 의해 실행될 경우, 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(예: 자기테이프), 광기록 매체(예: CD-ROM, DVD, 자기-광 매체 (예: 플롭티컬 디스크), 내장 메모리 등을 포함할 수 있다. 명령어는 컴파일러에 의해 만들어지는 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 다양한 실시예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 다른 구성요소를 더 포함할 수 있다. 다양한 실시예에 따른, 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이하에서 설명되는 클라이언트 및 서버는 도 1의 전자 장치(101) 또는 도 2의 전자 장치(201)를 의미할 수 있다. 다만, 클라이언트는 스마트폰, 태블릿 PC, 이동 전화기와 같은 이동하면서 사용 가능한 객체로 설명하고, 서버(예: 서버(106))는 네트워크를 통해 클라이언트로 서비스를 제공하는 객체로 설명할 수 있다. 그러나, 설명에 의해 클라이언트 및 서버가 한정되는 것은 아니다.
도 4는 다양한 실시예들에 따른 본 발명과 종래기술을 비교한 일례를 도시한 도면이다.
도 4를 참조하면, 종래기술(410)은 클라이언트(420, 예: 전자 장치(101))에서 서버(430, 예: 서버(106))로 업데이트 시간(예: 통신 요청 시간)에 업데이트(440)를 요청하고 있다. 업데이트 요청은 예를 들면, 주기적으로 발생할 수 있다. 업데이트 요청은 예를 들면, 클라이언트에서 필요한 서비스에 대한 요청일 수 있다. 상기 서비스는 클라이언트에 설치된 펌웨어(예: 운영체제), 어플리케이션(예: 어플리케이션 스토어, 날씨, 교통)일 수 있다. 예를 들면, 상기 업데이트 시간은 장치 부팅 시간과 업데이트 시간 간격에 기초하여 설정될 수 있다. 상기 장치 부팅 시간은 클라이언트가 전자 장치인 경우 전자 장치에 전원을 인가하여 부팅하는 시점일 수 있다. 상기 업데이트 시간 간격은 예를 들면, 업데이트 간의 시간 간격으로, 첫번째 업데이트의 시작 시간부터 두번째 업데이트의 시작 시간까지의 간격일 수 있다.
종래기술(410)에 따르면, 복수의 클라이언트들, 예를 들어, 클라이언트 1(421), 클라이언트 2(422), 클라이언트 3(423), 클라이언트 4(424) 및 클라이언트 5(425)는 제1 업데이트 시간(U1)에 동시에 서버(430)로 업데이트를 요청할 수 있다. 이때, 상기 업데이트 요청이 일정 주기마다 발생하는 경우, 복수의 클라이언트들(421 내지 425)의 제2 업데이트 시간(U2, 예: 다음 업데이트 시간)은 동일할 수 있다. 왜냐하면, 업데이트 시간은 장치 부팅 시간과 업데이트 시간 간격에 기초하여 설정되기 때문에 클라이언트가 재부팅되지 않는다면 제2 업데이트 시간은 복수의 클라이언트들(421 내지 425) 모두 동일하다.
즉, 도면에서는 5개의 클라이언트들이 동시에 업데이트를 요청하는 것으로 도시하였지만, 100개 또는 1000개의 클라이언트들이 서버(430)로 동시에 업데이트를 요청하는 경우 서버(430)에서 부하가 발생할 수 있다. 예를 들면, 서버(430)의 가용수는 100개인데, 동시에 200개의 클라이언트들이 동시에 업데이트를 요청하는 경우 가용수(예: 100개)보다 서비스 요청수(예: 200개)가 크기 때문에 서버(430)에 부하가 발생하는 것이다.
반면, 본 발명(450)은 클라이언트(420)에서 서버(430)로 업데이트를 요청하면, 서버(430)에서 클라이언트(420)로 업데이트 시간(예: 다음 업데이트 시간, 통신 요청 시간)을 설정하여 전송할 수 있다. 이때, 상기 업데이트 시간은 서버 가용 시간일 수 있다. 상기 서버 가용 시간이란 서버(430)가 업데이트 가능한 시간으로서, 서버(430)의 가용수보다 서버(430)의 업데이트 예약수가 작은 시간을 의미할 수 있다. 본 발명(450)에 따르면, 복수의 클라이언트들(421 내지 425)이 제1 업데이트 시간(U1)에 동시에 서버(430)로 업데이트를 요청하면, 서버(430)는 서버(430)의 가용 시간을 고려하여 복수의 클라이언트들(421 내지 425) 각각에 대한 제2 업데이트 시간들(U2-1 내지 U2-5)을 결정할 수 있다.
예를 들면, 서버(430)는 클라이언트 1(421)에 대해서는 "U2-5" 시점을 제2 업데이트 시간(U2-5)으로 결정하고, 클라이언트 2(422)에 대해서는 "U2-4" 시점을 제2 업데이트 시간(U2-4)으로 결정하고, 클라이언트 3(423)에 대해서는 "U2-1" 시점을 제2 업데이트 시간(U2-1)으로 결정하고, 클라이언트 4(424)에 대해서는 "U2-3" 시점을 제2 업데이트 시간(U2-3)으로 결정하며, 클라이언트 5(425)에 대해서는 "U2-2" 시점을 제2 업데이트 시간(U2-2)으로 결정할 수 있다. 참고로, 제2 업데이트 시간들(U2-1 내지 U2-5)은 시간축을 기준으로 서로 다른 시간임을 알 수 있다. 따라서, 본 발명(450)에 따르면, 복수의 클라이언트들(421 내지 425)은 첫번째 업데이트 시간이 "U1"으로 동일할지 몰라도, 두번째 업데이트 시간은 U2-1 내지 U2-5로 서로 다른 시간으로 설정될 수 있다. 이 경우, 서버(430)는 제2 업데이트 시간(U2)과 제3 업데이트 시간(U3) 사이에 복수의 클라이언트들(421 내지 425)의 제2 업데이트 시간들을 서로 다르게 분산시킴으로써, 부하를 분산시킬 수 있다.
이하에서는 도면을 참조하여 업데이트 시간을 분산시키는 다양한 방법을 설명한다.
도 5는 다양한 실시예들에 따른 업데이트를 처리하는 시스템의 구성도를 도시한 도면이다.
도 5를 참조하면, 업데이트를 처리하는 시스템(500)은, 예를 들면, 복수의 클라이언트들(510-530N) 및 서버(550)를 포함할 수 있다.
서버(550)는, 예를 들면, 시간 예약부(551), 시간 예약 모니터링부(552), 시간 예약 정책부(553), 및 시간 예약 데이터베이스(554)를 포함할 수 있다. 시간 예약부(551)는 서비스(예: 업데이트) 요청을 처리할 수 있다. 시간 예약부(551)는 복수의 클라이언트들(510 내지 530N) 각각에 대해 서버(550)의 가용한 시간대에 시간을 예약하고, 예약 시간(예: 통신 요청 시간, 다음 업데이트 시간)을 발급할 수 있다. 상기 예약 시간은 예약 정보에 포함되어 복수의 클라이언트들(510 내지 530N)로 전송될 수 있다. 시간 예약 모니터링부(552)는 상기 예약 시간에 대한 히트 레이트(hit rate), 시스템 부하, 또는 네트워크 트래픽 중 적어도 하나를 기반으로 예약 시간의 임계값을 계산할 수 있다. 예약 시간의 임계값이란 예약 가능한 시간 또는 예약 가능한 시간의 간격을 의미할 수 있다. 예를 들면, 시간 예약 모니터링부(552)는 예약 시간이 서버(550)의 가용 시간을 초과하지 않도록 상기 예약 시간의 임계값을 계산할 수 있다.
시간 예약 정책부(553)는 상기 예약 시간을 정할 때 서비스 우선순위, 예약 시간의 임계값을 적용할 수 있다. 상기 서비스 우선순위는 예를 들면, 서비스(예: 어플리케이션)의 타입에 따라 하나의 가용 시간(예: 제1 슬롯) 내 예약할 수 있는 시간대(time slot)를 다르게 적용하는 것을 의미할 수 있다. 시간 예약 데이터베이스(554)는 서버 정보, 가용수, 예약수, 예약 시간의 임계값 중 적어도 하나를 저장할 수 있다. 서버 정보는 서버 식별자, 서버의 접속 정보를 포함할 수 있다. 가용수는 동시에 접속 가능한 클라이언트의 개수를 의미할 수 있다. 예약수는 하나의 가용 시간에 예약된 클라이언트의 개수를 의미할 수 있다.
도시하지는 않았지만, 서버(550)는 예약 시간을 계산하는 프로세서(예: 프로세서(120), 프로세서(210)), 예약 시간을 전송하는 통신부(예: 통신 인터페이스(170), 통신 모듈(220))를 포함할 수 있다. 이외에도, 서버(550)는 도 5에 도시된 구성들이 필수적인 것은 아니어서, 도 5에 도시된 구성들보다 많은 구성들을 가지거나, 또는 그보다 적은 구성들을 가지는 것으로 구현될 수 있다.
한 실시예에 따르면, 복수의 클라이언트들(510 내지 530N)은 서버(550)로 서비스를 요청할 수 있다. 예를 들면, 클라이언트 1(510)은 시간 예약 스케줄링 에이전트 1(511) 및 저장부 1(512)를 포함할 수 있다. 시간 예약 스케줄링 에이전트 1(511)은 서버(550)로부터 상기 예약 정보를 수신하여 저장부 1(512)에 저장하고, 상기 예약 정보를 활성화시킬 수 있다. 예를 들면, 시간 예약 스케줄링 에이전트 1(511)은 현재 시간이 상기 예약 정보에 포함된 예약 시간에 해당하는 경우 서버(550)로 서비스를 요청할 수 있다. 도시하지는 않았지만, 시간 예약 스케줄링 에이전트 1(511)은 예약 정보 수신 및 서비스 요청 전송을 위한 통신부(예: 통신 인터페이스(170), 통신 모듈(220))를 포함할 수 있다. 또한, 시간 예약 스케줄링 에이전트 1(511)은 상기 예약 정보를 활성화시키기 위한 프로세서(예: 프로세서(120), 프로세서(210))에 포함되어 수행될 수 있다.
또한, 클라이언트 2(520)는, 예를 들면, 시간 예약 스케줄링 에이전트 2(521) 및 저장부 2(522)를 포함하며, 클라이언트 N(530N)는, 예를 들면, 시간 예약 스케줄링 에이전트 N(531N) 및 저장부 N(532N)을 포함할 수 있다. 시간 예약 스케줄링 에이전트 2(521) 및 시간 예약 스케줄링 에이전트 N(531N)은 시간 예약 스케줄링 에이전트 1(511)과 동일 또는 유사한 기능을 수행할 수 있다. 저장부 2(522) 및 저장부 N(532N)은 저장부 1(512)과 동일 또는 유사한 기능을 수행할 수 있다.
도 6은 다양한 실시예들에 따른 클라이언트와 서버에서 업데이트를 처리하는 방법을 도시한 흐름도이다.
도 6을 참조하면, 동작 601에서, 클라이언트(610)(예: 시간 예약 스케줄링 에이전트(511), 전자 장치(101), 또는 전자 장치(201))는 업데이트 시간을 확인할 수 있다. 상기 업데이트 시간이란 업데이트하도록 설정된 예약 시간일 수 있다. 상기 업데이트 시간은 클라이언트(610)의 저장부(예: 메모리(130))에 저장될 수 있다. 클라이언트(610)는 상기 저장부에 업데이트 시간이 저장되어 있는지 여부를 판단할 수 있다.
동작 603에서, 클라이언트(610)(예: 시간 예약 스케줄링 에이전트(511))는 서버(620)(예: 전자 장치(102), 서버(106))로 업데이트를 요청할 수 있다. 상기 업데이트 요청은 업데이트에 필요한 데이터를 요청하는 것으로, 예를 들면, 업데이트할 서비스 정보(예: 펌웨어 또는 어플리케이션에 대한 버전, 타입, 식별자 등)를 포함할 수 있다. 업데이이트 요청 시, 클라이언트(610)는 클라이언트(610)의 정보(예: 장치 정보 또는 사용자 정보), 예를 들면, 장치 식별자, 사용자 아이디, 전화번호 등을 함께 전송할 수 있다.
다양한 실시예들에 따르면, 클라이언트(610)는 현재 시간이 업데이트 시간에 해당하는 경우, 서버(620)로 업데이트를 요청할 수 있다. 또는, 클라이언트(610)는 상기 저장부에 업데이트 시간이 저장되어 있지 않은 경우에도 서버(620)로 업데이트를 요청할 수 있다. 예를 들면, 클라이언트(610)는 업데이트 이벤트가 발생되면, 서버(620)로 업데이트를 요청할 수 있다. 예를 들면, 상기 업데이트 이벤트는 부팅, 무선 인터넷 연결, 어플리케이션의 타입, 어플리케이션의 우선순위, 사용자 설정, 및 장치 설정 중 적어도 하나를 포함할 수 있다.
동작 605에서, 서버(620)(예: 시간 예약부(551)는 업데이트 데이터를 확인할 수 있다. 서버(620)는 상기 업데이트 요청을 수신하고, 상기 업데이트 요청에 포함된 정보에 기반하여 업데이트 데이터를 확인할 수 있다. 예를 들면, 서버(620)는 상기 서비스 정보에 기초하여 업데이트 데이터를 결정할 수 있다. 상기 서비스 정보에 포함된 버전이 2.1.3이고, 최신 버전이 2.1.4인 경우, 서버(620)는 최신 버전에 해당하는 어플리케이션으로 업데이트하기 위한 정보를 상기 업데이트 데이터로 결정할 수 있다.
동작 607에서, 서버(620)(예: 시간 예약부(551))는 예약 정보를 결정할 수 있다. 서버(620)는 동시에 복수의 클라이언트들이 업데이트 요청을 함으로써 과부하가 발생하는 것을 방지하기 위하여 업데이트 요청한 클라이언트들로 업데이트 데이터를 전송할 때, 다음에 업데이트할 시간을 함께 전송할 수 있다. 이를 위해, 서버(620)는 서버의 가용 시간에 기초하여 다음에 업데이트할 시간을 결정하고, 결정된 시간을 업데이트 예약 시간(또는 서비스 요청 예약 시간)으로서 예약 정보에 포함시킬 수 있다. 상기 예약 정보에는 업데이트 예약 시간과 함께 업데이트 예약 시간에 업데이트하지 못하는 경우 수행할 정보(예: 서버 접속 정보, 다른 예약 시간)가 함께 포함될 수도 있다.
동작 609에서, 서버(620)(예: 시간 예약부(551))는 상기 확인된 업데이트 데이터 및 상기 예약 정보를 클라이언트(610)로 전송할 수 있다. 예를 들면, 시간 예약부(551)는 서버(620)에 포함된 통신부를 통해 상기 확인된 업데이트 데이터 및 상기 예약 정보를 클라이언트(610)로 전송할 수 있다.
클라이언트(610)(예: 통신 인터페이스(170), 통신 모듈(220))는 상기 확인된 업데이트 데이터 및 상기 예약 정보를 수신할 수 있다. 동작 611에서, 클라이언트(610)(예: 프로세서(120), 프로세서(210)는 상기 수신된 업데이트 데이터에 기초하여 업데이트를 처리할 수 있다. 예를 들면, 클라이언트(610)는 상기 업데이트 데이터를 이용하여 어플리케이션을 최신 버전인 2.1.4로 업데이트할 수 있다. 또는 클라이언트(610)는 날씨와 관련된 어플리케이션인 경우, 상기 업데이트 데이터를 이용하여 현재 날짜(예: 업데이트 요청한 날짜)에 해당하는 날씨 정보로 업데이트할 수 있다. 클라이언트(610)는 설정에 따라 현재 날짜와 더불어 현재 위치에 해당하는 지역의 날씨 정보를 업데이트할 수 있다.
동작 613에서, 클라이언트(610)(예: 시간 예약 스케줄링 에이전트(511))는 상기 예약 정보를 저장부(예: 저장부 1(512), 메모리(130), 메모리(230))에 저장할 수 있다. 상기 예약 정보는 서버(620)로부터 수신된 것으로, 업데이트할 때마다 갱신될 수 있다. 클라이언트(610)는 업데이트할 때마다 저장부에 원래 저장되어 있던 예약 정보를 삭제하고, 최근 수신된 예약 정보를 저장할 수 있다.
도 7a 및 도 7b는 다양한 실시예들에 따른 업데이트를 처리하는 시스템의 다른 구성도를 도시한 도면이다.
도 7a는 복수의 클라이언트들(예: 710 내지 730N)이 동일한 서버(예: 서버 1(750))로 업데이트를 요청하는 일례를 도시한 것이다. 도 7a에서는 복수의 클라이언트들(710 내지 730N)이 서버 1(750)로 업데이트를 요청하였기 때문에, 나머지 서버들(예: 서버 2(760) 및 서버 M(770M))은 사용되지 않을 수 있다. 서버가 사용되지 않을 때에는 서버의 리소스를 절약할 수 있고 서버 사용 비용도 줄일 수 있다.
도 7a를 참조하면, 업데이트를 처리하는 시스템(700)은 복수의 클라이언트들(710-730N) 및 복수의 서버들(750-770M)을 포함할 수 있다. 클라이언트 1(710)은 서버 1(750)로 업데이트를 요청할 수 있다. 클라이언트 1(710)은 도 5의 클라이언트 1(510)과 동일 또는 유사한 구성요소(예: 시간 예약 스케줄링 에이전트 1(511), 저장부 1(512))를 포함할 수 있다. 클라이언트 1(710)은 시간 예약 스케줄링 에이전트를 통해 서버 1(750)로 업데이트를 요청할 수 있다. 서버 1(750)은 상기 업데이트 요청을 수신하고, 상기 요청에 응답하여 필요한 데이터를 클라이언트 1(710)로 전송할 수 있다. 서버 1(750)은 도 5의 서버(550)와 동일 또는 유사한 구성요소(예: 시간 예약부, 시간 예약 모니터링부, 시간 예약 정책부)를 포함할 수 있다.
다양한 실시예들에 따르면, 복수의 서버들로 구성되는 경우, 하나의 서버 또는 하나 이상의 서버들이 마스터 서버가 되고, 마스터 서버를 제외한 서버들이 슬레이브 서버가 될 수 있다. 마스터 서버 또는 슬레이브 서버는 사용자 또는 관리자에 의해 설정될 수 있다. 여기서는, 서버 1(750)을 마스터 서버로 설명하고, 서버 2(760) 및 서버 M(770M)을 슬레이브 서버로 설명한다. 그러나, 상기 설명에 의해 마스터 서버와 슬레이브 서버가 한정되는 것은 아니다.
시간 예약 데이터베이스(780)는 서버 별 가용수 및 예약수를 포함할 수 있다. 상기 가용수는 각 서버에서 가용 가능한 수(또는 시간)일 수 있다. 상기 예약수는 각 서버에 업데이트를 예약한 클라이언트의 수일 수 있다. 다양한 실시예들에 따르면, 마스터 서버(예: 서버 1(750))는 슬레이브 서버(예: 서버 2(760) 및 서버 M(770M))에 비해 가용수 또는 예약수가 적을 수 있다.
서버 1(750)은 업데이트에 필요한 데이터 및 예약 정보를 클라이언트 1(710)로 전송할 수 있다. 서버 1(750)은 시간 예약 데이터베이스(780)를 참조하여 상기 예약 정보를 생성할 수 있다. 상기 예약 정보는 서버 접속 정보 및 업데이트 예약 시간을 포함할 수 있다. 상기 서버 접속 정보는 서버 1(750)에 대한 접속 정보이거나, 서버 2(760)에 대한 접속 정보이거나, 서버 M(770M)에 대한 접속 정보일 수 있다. 예를 들면, 서버 1(750)은 시간 예약 데이터베이스(780)에 저장된 모든 서버들의 예약수를 조회하여 예약수가 가장 적은 서버를 다음 접속 서버로 결정할 수 있다. 또는 그 반대도 가능하다. 서버 1(750)은 예약수가 가장 적은 순으로 서버들을 정렬하고, 그 중에서 예약수가 가장 적은 순서대로 다음 접속 서버로 결정할 수 있다. 또는, 서버 1(750)은 예약수와 가용수의 차이가 가장 적은 순으로 서버들을 정렬하고, 그 중에서 차이가 가장 적은 순서대로 다음 접속 서버로 결정할 수 있다. 또는, 그 반대도 가능하다.
예를 들면, 서버 1(750)은 업데이트 예약 시간에 대응하는 서버 1(750)의 가용수가 예약수보다 큰 경우, 상기 예약 정보에 서버 1(750)에 대한 접속 정보를 포함시킬 수 있다. 서버 1(750)은 업데이트 예약 시간에 대응하는 서버 1(750)의 가용수가 예약수와 동일하거나 작은 경우, 상기 예약 정보에 서버 1(750)이 아닌 서버 2(760) 또는 서버 M(770M)에 대한 접속 정보를 포함시킬 수 있다. 예를 들면, 서버 1(750)은 클라이언트 1(710)에게 다음 업데이트할 서버로 서버 2(760)를 결정할 수 있다. 서버 1(750)은 상기 예약 정보에 업데이트 예약 시간과 서버 2(760)에 대한 접속 정보를 포함시켜 클라이언트 1(710)로 전송할 수 있다. 또한, 서버 1(750)은 상기 예약 정보에 포함된 업데이트 예약 시간 또는 서버 접속 정보를 시간 예약 데이터베이스(780)에 저장할 수 있다. 예를 들어, 서버 1(750)은 서버 2(760)에 대한 예약수를 하나 증가시켜 시간 예약 데이터베이스(780)에 저장할 수 있다.
클라이언트 1(710)은 상기 예약 정보를 저장부(예: 저장부 1(512))에 저장할 수 있다. 클라이언트 1(710)은 상기 예약 정보를 기반으로 이후의 업데이트 요처을 처리할 수 있다.
클라이언트 2(720)는 서버 1(750)로 업데이트를 요청할 수 있다. 클라이언트 2(720)은 도 5의 클라이언트 2(520)과 동일 또는 유사한 구성요소(예: 시간 예약 스케줄링 에이전트 2(521), 저장부 2(522))를 포함할 수 있다. 클라이언트 2(720)는 시간 예약 스케줄링 에이전트를 통해 서버 1(750)로 업데이트를 요청할 수 있다. 서버 1(750)은 상기 업데이트 요청을 수신하고, 상기 요청에 응답하여 필요한 데이터를 클라이언트 1(710)로 전송할 수 있다. 서버 1(750)은 업데이트에 필요한 데이터 및 예약 정보를 클라이언트 2(720)로 전송할 수 있다. 서버 1(750)은 시간 예약 데이터베이스(780)에 저장된 서버별 가용수 및 예약수를 기반으로 상기 예약 정보를 생성할 수 있다.
예를 들면, 서버 1(750)은 클라이언트 2(720)에게 다음 업데이트할 서버로 서버 2(760)를 결정할 수 있다. 서버 1(750)은 상기 예약 정보에 업데이트 예약 시간과 서버 2(760)에 대한 접속 정보를 포함시켜 클라이언트 2(720)로 전송할 수 있다. 또한, 서버 1(750)은 상기 예약 정보에 포함된 업데이트 예약 시간 또는 서버 접속 정보를 시간 예약 데이터베이스(780)에 저장할 수 있다. 예를 들어, 서버 1(750)은 서버 2(760)에 대한 예약수를 하나 증가시켜 시간 예약 데이터베이스(780)에 저장할 수 있다. 클라이언트 2(720)는 상기 예약 정보를 저장부(예: 저장부 2(522))에 저장할 수 있다. 클라이언트 2(720)는 상기 예약 정보를 기반으로 이후의 업데이트 요청을 처리할 수 있다.
클라이언트 N(730N)은 서버 1(750)로 업데이트를 요청할 수 있다. 클라이언트 N(730N)은 도 5의 클라이언트 N(530)과 동일 또는 유사한 구성요소(예: 시간 예약 스케줄링 에이전트 N(531N), 저장부 N(532N))를 포함할 수 있다. 클라이언트 N(730N)은 시간 예약 스케줄링 에이전트를 통해 서버 1(750)로 업데이트를 요청할 수 있다. 서버 1(750)은 상기 업데이트 요청을 수신하고, 상기 요청에 응답하여 필요한 데이터를 클라이언트 N(730N)으로 전송할 수 있다. 서버 1(750)은 업데이트에 필요한 데이터 및 예약 정보를 클라이언트 N(730N)으로 전송할 수 있다. 서버 1(750)은 시간 예약 데이터베이스(780)에 저장된 서버별 가용수 및 예약수를 기반으로 상기 예약 정보를 생성할 수 있다.
예를 들면, 서버 1(750)은 클라이언트 N(730N)에게 다음 업데이트할 서버로 서버 M(770M)을 결정할 수 있다. 서버 1(750)은 상기 예약 정보에 업데이트 예약 시간과 서버 M(770M)에 대한 접속 정보를 포함시켜 클라이언트 N(730N)으로 전송할 수 있다. 또한, 서버 1(750)은 상기 예약 정보에 포함된 업데이트 예약 시간 또는 서버 접속 정보를 시간 예약 데이터베이스(780)에 저장할 수 있다. 예를 들어, 서버 1(750)은 서버 M(770M)에 대한 예약수를 하나 증가시켜 시간 예약 데이터베이스(780)에 저장할 수 있다. 클라이언트 N(730N)은 상기 예약 정보를 저장부(예: 저장부 N(5232N)에 저장할 수 있다. 클라이언트 N(730N)은 상기 예약 정보를 기반으로 이후의 업데이트 요청을 처리할 수 있다.
이렇게, 클라이언트 1(710), 클라이언트 2(720) 및 클라이언트 N(730N)에 전송된 예약 정보는 동일하거나, 다를 수 있다. 예를 들면, 클라이언트 1(710), 클라이언트 2(720) 및 클라이언트 N(730N)에 전송된 업데이트 예약 시간은 모두 동일할 수 있다. 클라이언트 1(710), 클라이언트 2(720) 및 클라이언트 N(730N)에 전송된 서버 접속 정보는 동일할 수도 있고, 다를 수도 있다. 시간 예약 데이터베이스(780)는 상기 서버 접속 정보에 따라 서버의 예약수가 갱신되어 저장될 수 있다. 다양한 실시예들에 따르면, 시간 예약 데이터베이스(780)에 저장된 서버의 가용수 및 예약수에 기초하여 다음에 접속할 서버가 결정될 수 있다.
도 7b는 복수의 클라이언트들(예: 710 내지 730N)이 서로 다른 서버로 각각 업데이트를 요청하는 일례를 도시한 것이다. 도 7b에서는 복수의 클라이언트들(710 내지 730N)이 서로 다른 서버들(예: 서버 2(760) 및 서버 M(770M))로 업데이트를 요청하였기 때문에, 복수의 서버들이 사용될 수 있다. 즉, 복수의 서버들은 필요한 경우(예: 업데이트 시간에만)에만 사용하고, 필요하지 않는 경우에는 사용하지 않도록 하여 서버의 리소스 및 비용을 절약할 수 있다.
도 7b를 참조하면, 업데이트를 처리하는 시스템(700)은 복수의 클라이언트들(710-730N) 및 복수의 서버들(750-770M)을 포함할 수 있다. 클라이언트 1(710)은 저장부(예: 저장부 1(512))에 저장된 예약 정보를 기반으로 업데이트를 요청할 수 있다. 예를 들면, 클라이언트 1(710)은 상기 저장부에 예약 정보가 저장되어 있는지 판단할 수 있다. 클라이언트 1(710)은 상기 저장부에 예약 정보가 저장되어 있는 경우, 상기 예약 정보에 포함된 업데이트 예약 시간 및 서버 접속 정보를 확인할 수 있다. 클라이언트 1(710)은 상기 업데이트 예약 시간이 현재 시간과 동일한 경우, 상기 서버 접속 정보에 해당하는 서버(예: 서버 2(760))로 업데이트를 요청할 수 있다.
서버 2(760)는 클라이언트 1(710)로부터 업데이트 요청을 수신하고, 업데이트에 필요한 데이터 및 예약 정보를 클라이언트 1(710)로 전송할 수 있다. 서버 2(760)는 도 5의 서버(550)와 동일 또는 유사한 구성요소(예: 시간 예약부, 시간 예약 모니터링부, 시간 예약 정책부)를 포함할 수 있다. 서버 2(760)는 시간 예약 데이터베이스(780)에 저장된 서버별 가용수 및 예약수를 기반으로 업데이트 예약 시간 및 서버 접속 정보를 생성할 수 있다.
예를 들면, 서버 2(760)는 업데이트 예약 시간에 대응하는 서버 2(760)의 가용수가 예약수보다 큰 경우, 상기 예약 정보에 서버 2(760)에 대한 접속 정보를 포함시킬 수 있다. 서버 2(760)는 업데이트 예약 시간에 대응하는 서버 2(760)의 가용수가 예약수와 동일하거나 작은 경우, 상기 예약 정보에 서버 2(760)가 아닌 서버 1(750) 또는 서버 M(770M)에 대한 접속 정보를 포함시킬 수 있다. 예를 들면, 서버 2(760)는 클라이언트 1(710)에게 다음 업데이트할 서버로 서버 2(760)를 결정할 수 있다. 서버 2(760)는 상기 예약 정보에 업데이트 예약 시간과 서버 2(760)에 대한 접속 정보를 포함시켜 클라이언트 1(710)로 전송할 수 있다. 또한, 서버 2(760)는 상기 예약 정보에 포함된 업데이트 예약 시간 또는 서버 접속 정보를 시간 예약 데이터베이스(780)에 저장할 수 있다. 예를 들어, 서버 2(760)는 서버 2(760)에 대한 예약수를 하나 증가시켜 시간 예약 데이터베이스(780)에 저장할 수 있다.
클라이언트 1(710)은 서버 2(760)로부터 상기 예약 정보를 수신하고, 수신된 예약 정보를 저장할 수 있다. 즉, 클라이언트 1(710)은 상기 예약 정보를 갱신할 수 있다. 예를 들면, 클라이언트 1(710)은 도 7a에서 저장되어 있던 예약 정보를 삭제하고, 도 7b에서 수신한 예약 정보를 저장부에 저장할 수 있다.
클라이언트 2(720)는 저장부(예: 저장부 2(522))에 저장된 예약 정보를 기반으로 업데이트를 요청할 수 있다. 예를 들면, 클라이언트 2(720)는 상기 저장부에 예약 정보가 저장되어 있는지 판단할 수 있다. 클라이언트 2(720)는 상기 저장부에 예약 정보가 저장되어 있는 경우, 상기 예약 정보에 포함된 업데이트 예약 시간 및 서버 접속 정보를 확인할 수 있다. 클라이언트 2(720)는 상기 업데이트 예약 시간이 현재 시간과 동일한 경우, 상기 서버 접속 정보에 해당하는 서버(예: 서버 2(760))로 업데이트를 요청할 수 있다.
서버 2(760)는 클라이언트 2(720)로부터 업데이트 요청을 수신하고, 업데이트에 필요한 데이터 및 예약 정보를 클라이언트 2(720)로 전송할 수 있다. 서버 2(760)는 시간 예약 데이터베이스(780)에 저장된 서버별 가용수 및 예약수를 기반으로 업데이트 예약 시간 및 서버 접속 정보를 생성할 수 있다. 예를 들면, 서버 2(760)는 업데이트 예약 시간에 대응하는 서버 2(760)의 가용수가 예약수보다 큰 경우, 상기 예약 정보에 서버 2(760)에 대한 접속 정보를 포함시킬 수 있다. 서버 2(760)는 업데이트 예약 시간에 대응하는 서버 2(760)의 가용수가 예약수와 동일하거나 작은 경우, 상기 예약 정보에 서버 2(760)가 아닌 서버 1(750) 또는 서버 M(770M)에 대한 접속 정보를 포함시킬 수 있다.
예를 들면, 서버 2(760)는 클라이언트 2(720)에게 다음 업데이트할 서버로 서버 1(750)를 결정할 수 있다. 서버 2(760)는 상기 예약 정보에 업데이트 예약 시간과 서버 1(750)에 대한 접속 정보를 포함시켜 클라이언트 2(720)로 전송할 수 있다. 또한, 서버 2(760)는 상기 예약 정보에 포함된 업데이트 예약 시간 또는 서버 접속 정보를 시간 예약 데이터베이스(780)에 저장할 수 있다. 예를 들어, 서버 2(760)는 서버 1(750)에 대한 예약수를 하나 증가시켜 시간 예약 데이터베이스(780)에 저장할 수 있다.
클라이언트 2(720)는 상기 예약 정보를 수신하고, 수신된 예약 정보를 저장할 수 있다. 클라이언트 2(720)는 도 7a에서 저장되어 있던 예약 정보를 삭제하고, 도 7b에서 수신한 예약 정보를 저장부에 저장할 수 있다.
클라이언트 N(730N)은 저장부(예: 저장부 N(532N))에 저장된 예약 정보를 기반으로 업데이트를 요청할 수 있다. 예를 들면, 클라이언트 N(730N)은 상기 저장부에 예약 정보가 저장되어 있는지 판단할 수 있다. 클라이언트 N(730N)은 상기 저장부에 예약 정보가 저장되어 있는 경우, 상기 예약 정보에 포함된 업데이트 예약 시간 및 서버 접속 정보를 확인할 수 있다. 클라이언트 N(730N)은 상기 업데이트 예약 시간이 현재 시간과 동일한 경우, 상기 서버 접속 정보에 해당하는 서버(예: 서버 M(770M))로 업데이트를 요청할 수 있다.
서버 M(770M)은 클라이언트 N(730N)으로부터 업데이트 요청을 수신하고, 업데이트에 필요한 데이터 및 예약 정보를 클라이언트 N(730N)으로 전송할 수 있다. 서버 M(770M)은 도 5의 서버(550)와 동일 또는 유사한 구성요소(예: 시간 예약부, 시간 예약 모니터링부, 시간 예약 정책부)를 포함할 수 있다. 서버 M(770M)은 시간 예약 데이터베이스(780)에 저장된 서버별 가용수 및 예약수를 기반으로 업데이트 예약 시간 및 서버 접속 정보를 생성할 수 있다.
예를 들면, 서버 M(770M)은 업데이트 예약 시간에 대응하는 서버 M(770M)의 가용수가 예약수보다 큰 경우, 상기 예약 정보에 서버 M(770M)에 대한 접속 정보를 포함시킬 수 있다. 서버 M(770M)은 업데이트 예약 시간에 대응하는 서버 M(770M)의 가용수가 예약수와 동일하거나 작은 경우, 상기 예약 정보에 서버 M(770M)이 아닌 서버 1(750) 또는 서버 2(760)에 대한 접속 정보를 포함시킬 수 있다. 예를 들면, 서버 M(770M)은 클라이언트 N(730N)에게 다음 업데이트할 서버로 서버 M(770M)을 결정할 수 있다. 서버 M(770M)은 상기 예약 정보에 업데이트 예약 시간과 서버 M(770M)에 대한 접속 정보를 포함시켜 클라이언트 N(730N)으로 전송할 수 있다. 또한, 서버 M(770M)은 상기 예약 정보에 포함된 업데이트 예약 시간 또는 서버 접속 정보를 시간 예약 데이터베이스(780)에 저장할 수 있다. 예를 들어, 서버 M(770M)은 서버 M(770M)에 대한 예약수를 하나 증가시켜 시간 예약 데이터베이스(780)에 저장할 수 있다.
클라이언트 N(730N)은 상기 예약 정보를 수신하고, 수신된 예약 정보를 저장할 수 있다. 클라이언트 N(730N)은 도 7a에서 저장되어 있던 예약 정보를 삭제하고, 도 7b에서 수신한 예약 정보를 저장부에 저장할 수 있다.
다양한 실시예들에 따른 전자 장치는 통신 인터페이스; 복수의 외부 장치들과 통신을 수행할 예약 시간을 저장하도록 설정된 메모리; 및 상기 통신 인터페이스 및 상기 메모리와 기능적으로 연결된 프로세서를 포함하고, 상기 프로세서는, 상기 통신 인터페이스를 통해 상기 복수의 외부 장치들 중 적어도 하나의 외부 장치로부터 서비스 요청을 수신하고, 상기 예약 시간 및 상기 예약 시간과 관련된 부하량에 기반하여 상기 서비스 요청과 연관된 통신 요청 시간을 결정하고, 및 상기 결정된 통신 요청 시간을 상기 통신 인터페이스를 통해 상기 적어도 하나의 외부 장치에 전송하도록 설정될 수 있다.
상기 프로세서는 상기 서비스 요청에 기반하여 통신 요청 시간을 확인하고, 및 상기 복수의 외부 장치들과 통신을 수행할 예약 시간 및 상기 예약 시간에 상기 프로세서의 부하량에 기반하여 상기 통신 요청 시간을 결정하도록 설정될 수 있다.
상기 프로세서는 상기 복수의 외부 장치들과 통신을 수행할 예약 시간 중 미리 정한 조건을 만족하는 시간을 상기 서비스 요청과 연관된 통신 요청 시간으로 결정하도록 설정될 수 있다.
상기 프로세서는 상기 프로세서와 관련된 부하량 중 기준값 보다 적은 작업을 처리하는 시간을 상기 통신 요청 시간으로 결정하도록 설정될 수 있다.
상기 프로세서는 상기 서비스 요청에 포함된 서비스 정보 및 장치 정보를 기반으로 상기 통신 요청 시간을 선택하도록 설정될 수 있다.
상기 프로세서는 상기 예약 시간의 가용수 또는 예약수를 기반으로 상기 통신 요청 시간을 선택하도록 설정될 수 있다.
상기 프로세서는 상기 서비스 요청에 포함된 서비스 정보를 기반으로 우선 순위 적용 여부를 판단하고, 상기 판단 결과에 기반하여 슬롯을 선택하도록 설정된 전자 장치.
상기 프로세서는 시간을 복수의 슬롯으로 분할하고, 분할된 슬롯들 중에서 최소 서비스 요청 간격 후의 슬롯을 선택하고, 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정될 수 있다.
상기 프로세서는 상기 선택된 슬롯의 예약수가 가용수 이하인지 판단하고, 상기 예약수가 상기 가용수 미만인 경우, 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정될 수 있다.
상기 프로세서는 상기 선택된 슬롯의 예약수가 가용수 미만인지 판단하고, 상기 예약수가 상기 가용수와 동일한 경우, 다른 슬롯을 선택하고, 선택된 다른 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정될 수 있다.
상기 프로세서는 시간을 복수의 슬롯으로 분할하고, 분할된 슬롯들 중에서 최소 서비스 요청 간격 후의 슬롯을 선택하고, 선택된 슬롯 내에서 상기 서비스 요청에 포함된 서비스 정보의 우선 순위를 확인하고, 상기 우선 순위에 대응하는 가용수 또는 예약수를 기반으로 상기 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정될 수 있다.
상기 프로세서는 상기 우선 순위에 대응하는 예약수가 가용수 이하인지 판단하고, 상기 예약수가 상기 가용수 미만인 경우, 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정될 수 있다.
상기 프로세서는 상기 우선 순위에 대응하는 예약수가 가용수 미만인지 판단하고, 상기 예약수가 상기 가용수와 동일한 경우, 다른 슬롯을 선택하고, 선택된 다른 슬롯 내에서 상기 서비스 요청에 포함된 서비스 정보의 우선 순위를 확인하고, 상기 우선 순위에 대응하는 가용수 또는 예약수를 기반으로 상기 다른 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정될 수 있다.
다양한 실시예들에 따른 전자 장치는 서비스 요청에 관련된 예약 정보를 저장하도록 설정된 메모리, 및 상기 메모리와 기능적으로 연결된 프로세서를 포함하고, 상기 프로세서는 서비스 요청 이벤트의 검출에 따라 상기 메모리에 상기 예약 정보가 저장되어 있는지 판단하고, 상기 판단 결과를 기반으로 상기 예약 정보에 포함된 통신 요청 시간 또는 상기 서비스 요청 이벤트의 검출 시간에 외부 장치로 서비스 요청을 전송하도록 설정될 수 있다.
상기 프로세서는 상기 메모리에 예약 정보가 저장되어 있는 경우, 현재 시간과 상기 예약 정보에 포함된 통신 요청 시간을 비교하고, 상기 현재 시간이 상기 통신 요청 시간과 일치하는 경우 상기 서비스 요청을 전송하도록 설정될 수 있다.
상기 프로세서는 상기 메모리에 예약 정보가 저장되어 있지 않은 경우, 상기 서비스 요청 이벤트의 검출 시간에 상기 서비스 요청을 전송하도록 설정될 수 있다.
도 8은 다양한 실시예들에 따른 클라이언트와 서버에서 업데이트를 처리하는 방법을 도시한 흐름도이다.
도 8을 참조하면, 동작 801에서, 클라이언트(810)(예: 시간 예약 스케줄링 에이전트 1(511), 프로세서(120))는 서버 1(820)로 업데이트를 요청할 수 있다. 클라이언트(810)는 도 5의 클라이언트 1(510)과 동일 또는 유사한 구성요소(예: 시간 예약 스케줄링 에이전트 1(511), 저장부 1(512))를 포함할 수 있다. 클라이언트(810)는 시간 예약 스케줄링 에이전트를 통해 서버 1(820)로 업데이트를 요청할 수 있다. 클라이언트(810)는 상기 업데이트 요청 시, 업데이트할 서비스 정보(예: 어플리케이션에 대한 버전, 타입, 식별자 등), 클라이언트(810)의 정보, 예를 들면, 장치 식별자, 사용자 아이디, 전화번호 등을 함께 전송할 수 있다.
다양한 실시예들에 따르면, 클라이언트(810)는 현재 시간이 업데이트 예약 시간에 해당하는 경우, 서버 1(820)로 업데이트를 요청할 수 있다. 또는, 클라이언트(810)는 상기 저장부에 업데이트 예약 시간이 저장되어 있지 않은 경우에도 서버 1(820)로 업데이트를 요청할 수 있다. 예를 들면, 클라이언트(810)는 업데이트 이벤트가 발생되면, 서버 1(820)로 업데이트를 요청할 수 있다. 예를 들면, 상기 업데이트 이벤트는 부팅, 무선 인터넷 연결, 어플리케이션의 타입, 어플리케이션의 우선순위, 사용자 설정, 및 장치 설정 중 적어도 하나를 포함할 수 있다.
동작 803에서, 서버 1(820)(예: 시간 예약부(551))은 상기 업데이트 요청을 수신하고, 상기 요청에 응답하여 제1 예약 정보를 결정할 수 있다. 서버 1(820)은 도 5의 서버(550)와 동일 또는 유사한 구성요소(예: 시간 예약부, 시간 예약 모니터링부, 시간 예약 정책부)를 포함할 수 있다. 서버 1(820)은 상기 업데이트 요청에 포함된 정보(예: 서비스 정보, 클라이언트 정보)에 기반하여 업데이트 데이터를 확인할 수 있다. 예를 들면, 서버 1(820)은 상기 서비스 정보에 기초하여 업데이트 데이터를 결정할 수 있다. 서버 1(820)은 시간 예약 데이터베이스(예: 시간 예약 데이터베이스(780))를 참고하여 상기 제1 예약 정보를 생성할 수 있다.
예를 들면, 서버 1(820)은 상기 시간 예약 데이터베이스에 저장된 모든 서버들의 예약수를 조회하여 예약수가 가장 적은 서버를 다음 접속 서버로 결정할 수 있다. 서버 1(820)은 예약수가 가장 적은 순으로 서버들을 정렬하고, 그 중에서 예약수가 가장 적은 순서대로 다음 접속 서버로 결정할 수 있다. 또는, 서버 1(820)은 예약수와 가용수의 차이가 가장 적은 순으로 서버들을 정렬하고, 그 중에서 차이가 가장 적은 순서대로 다음 접속 서버로 결정할 수 있다.
동작 805에서, 서버 1(820)(예: 시간 예약부(551))은 상기 제1 예약 정보를 포함하는 데이터를 클라이언트(810)로 전송할 수 있다. 상기 제1 예약 정보는 업데이트 예약 시간과 서버 접속 정보(예: 서버 2(830)에 대한 접속 정보)를 포함할 수 있다. 서버 1(820)은 상기 예약 정보에 포함된 업데이트 예약 시간 또는 서버 접속 정보를 상기 시간 예약 데이터베이스에 저장할 수 있다. 예를 들어, 서버 1(820)은 서버 2(830)에 대한 예약수를 하나 증가시켜 상기 시간 예약 데이터베이스에 저장할 수 있다. 상기 제1 예약 정보는 후술하는 제2 예약 정보와 구분하기 위한 것으로 발명의 내용을 한정하지 않는다. 상기 데이터는 상기 제1 예약 정보와 업데이트 데이터를 포함할 수 있다.
동작 807에서, 클라이언트(810)(예: 프로세서(120))는 상기 데이터를 수신하고, 상기 데이터를 처리할 수 있다. 상기 데이터를 처리한다는 것은 상기 데이터가 업데이트 데이터인 경우 업데이트를 처리하는 것으로 해석될 수 있다. 예를 들면, 클라이언트(810)는 현재 날짜 또는 현재 위치에 따른 날씨를 업데이트하거나, 최신 버전으로 펌웨어 또는 어플리케이션을 업데이트할 수 있다.
동작 809에서, 클라이언트(810)(예: 시간 예약 스케줄링 에이전트 1(511))는 상기 제1 예약 정보를 상기 저장부에 저장할 수 있다. 예를 들면, 클라이언트(810)는 상기 저장부에 이미 저장되어 있는 예약 정보가 있다면, 기저장된 예약 정보를 삭제하고, 상기 제1 예약 정보를 저장할 수 있다.
동작 811에서, 클라이언트(810)(예: 시간 예약 스케줄링 에이전트 1(511))는 상기 제1 예약 정보를 확인할 수 있다. 예를 들면, 클라이언트(810)는 상기 저장부에 저장된 상기 제1 예약 정보를 확인하여 현재 시간이 업데이트 예약 시간에 해당하는지 여부를 판단할 수 있다. 예를 들면, 상기 현재 시간이 2015년 7월 1일 오전 9시이고, 상기 업데이트 예약 시간이 매일 오전 9시, 또는 2015년 7월 1일 오전 9시일 수 있다. 클라이언트(810)는 상기 업데이트 예약 시간이 현재 시간에 대응되는 경우, 동작 813을 수행할 수 있다.
동작 813에서, 클라이언트(810)(예: 시간 예약 스케줄링 에이전트 1(511))는 상기 제1 예약 정보에 기초하여 업데이트를 요청할 수 있다. 예를 들면, 클라이언트(810)는 상기 제1 예약 정보에 포함된 서버 접속 정보가 서버 2(830)인 경우, 서버 2(830)로 업데이트를 요청할 수 있다. 예를 들면, 클라이언트(810)는 서비스 정보 및 클라이언트(810)의 정보를 포함하는 업데이트 요청을 서버 2(830)로 전송할 수 있다.
다양한 실시예들에 따르면, 클라이언트(810)는 상기 저장부에 예약 정보가 저장되어 있지 않은 경우, 업데이트를 요청하지 않고 대기할 수 있다. 이후 클라이언트(810)는 업데이트 이벤트가 발생되면, 서버 1(820)로 업데이트를 요청할 수 있다.
동작 815에서, 서버 2(830)(예: 시간 예약부(551))는 상기 업데이트 요청을 수신하고, 상기 요청에 응답하여 제2 예약 정보를 결정할 수 있다. 서버 2(830)는 도 5의 서버(550)와 동일 또는 유사한 구성요소(예: 시간 예약부, 시간 예약 모니터링부, 시간 예약 정책부)를 포함할 수 있다. 서버 2(830)는 상기 업데이트 요청에 포함된 정보(예: 서비스 정보, 클라이언트 정보)에 기반하여 업데이트 데이터를 확인할 수 있다. 또한, 서버 2(830)는 상기 시간 예약 데이터베이스를 참고하여 상기 제2 예약 정보를 생성할 수 있다.
예를 들면, 서버 2(830)는 상기 시간 예약 데이터베이스에 저장된 모든 서버들의 예약수를 조회하여 예약수가 가장 적은 서버를 다음 접속 서버로 결정할 수 있다. 서버 2(830)는 예약수가 가장 적은 순으로 서버들을 정렬하고, 그 중에서 예약수가 가장 적은 순서대로 다음 접속 서버로 결정할 수 있다. 또는, 서버 2(830)는 예약수와 가용수의 차이가 가장 적은 순으로 서버들을 정렬하고, 그 중에서 차이가 가장 적은 순서대로 다음 접속 서버로 결정할 수 있다.
동작 817에서, 서버 2(830)(예: 시간 예약부(551))는 상기 제2 예약 정보를 포함하는 데이터를 클라이언트(810)로 전송할 수 있다. 상기 제2 예약 정보는 업데이트 예약 시간과 서버 접속 정보(예: 서버 2(830)에 대한 접속 정보)를 포함할 수 있다. 서버 2(830)는 상기 예약 정보에 포함된 업데이트 예약 시간 또는 서버 접속 정보를 상기 시간 예약 데이터베이스에 저장할 수 있다. 예를 들어, 서버 2(830)는 서버 2(830)에 대한 예약수를 하나 증가시켜 상기 시간 예약 데이터베이스에 저장할 수 있다.
동작 819에서, 클라이언트(810)(예: 프로세서(120))는 상기 데이터를 수신하고, 상기 데이터를 처리할 수 있다. 상기 데이터를 처리한다는 것은 상기 데이터가 업데이트 데이터인 경우 업데이트를 처리하는 것으로 해석될 수 있다.
동작 821에서, 클라이언트(810)(예: 시간 예약 스케줄링 에이전트 1(511))는 상기 제2 예약 정보를 상기 저장부에 저장할 수 있다. 즉, 클라이언트(810)는 상기 저장부에 저장된 예약 정보를 갱신할 수 있다. 예를 들면, 클라이언트(810)는 상기 저장부에 이미 저장된 상기 제1 예약 정보를 삭제하고, 상기 제2 예약 정보를 저장할 수 있다. 이후, 클라이언트(810)는 상기 제2 예약 정보에 기초하여 업데이트 요청을 처리할 수 있다.
도 9는 다양한 실시예들에 따른 업데이트 처리 방법을 도시한 흐름도이다.
도 9를 참조하면, 동작 901에서, 서버(예: 통신 인터페이스(170))는 전자 장치(예: 클라이언트(810))로부터 서비스 요청(예: 업데이트 요청)을 수신할 수 있다. 상기 서비스 요청은 서비스 정보 및 장치 정보를 포함할 수 있다. 상기 서비스 정보는 업데이트가 필요한 펌웨어 또는 어플리케이션에 대한 버전, 타입, 및 식별자 중 적어도 하나를 포함할 수 있다. 상기 장치 정보는 상기 전자 장치에 대한 식별자, 사용자 아이디, 및 상기 전자 장치에 대한 전화번호 중 적어도 하나를 포함할 수 있다.
동작 903에서, 상기 서버(예: 시간 예약부(551), 프로세서(120))는 상기 서비스 요청에 응답하여 통신 요청 시간을 확인할 수 있다. 상기 통신 요청 시간을 확인하는 것은 상기 서비스 정보에 기초하여 다음에 업데이트가 필요한 시간이 언제인지 확인하는 것일 수 있다. 예를 들면, 업데이트가 필요한 시간이 특정 시각(예: 오전 9시)일 경우 특정 시각이 통신 요청 시간이 될 수 있다. 또는, 업데이트가 필요한 시간이 일정 주기(예: 12시간, 하루, 일주일 등)를 갖는 것일 경우, 최소 업데이트 간격(예: 12시간, 24시간 등) 이후의 시간이 통신 요청 시간이 될 수 있다.
동작 905에서, 상기 서버(예: 시간 예약 모니터링부(552), 프로세서(120))는 상기 통신 요청 시간의 부하량을 판단할 수 있다. 예를 들면, 상기 서버는 시간 예약 데이터베이스(예: 메모리(130))를 기반으로 상기 통신 요청 시간에 예약한 예약수가 서버의 가용수 이하인지 여부를 판단할 수 있다. 상기 시간 예약 데이터베이스에는 적어도 하나의 서버에 대한 가용수 또는 예약수가 저장될 수 있다.
표 1은 시간 예약 데이터베이스에 저장된 정보를 나타낸 것이다.
항목 설명
서버 접속 정보 다음 서비스 요청 시 접속해야 하는 서버 정보
최소 통신 요청 시간 간격 두 서비스 요청들 간의 시간 간격
슬롯 시작 시간 하나의 슬롯의 시작 시간
슬롯 종료 시간 하나의 슬롯의 종료 시간
슬롯의 가용 정보 서비스 요청을 처리 가능한 양 또는 수
슬롯의 예약 정보 서비스 요청을 예약한 양 또는 수
표 1을 참고하면, 상기 예약수는 상기 통신 요청 시간에 서비스를 요청할 것임을 예약한 전자 장치의 개수일 수 있다. 상기 가용수는 상기 서버가 전자 장치의 서비스 요청을 한번에(예: 시점, 시간 동안) 처리할 수 있는 양(예: 개수)을 의미할 수 있다. 예를 들어, 상기 통신 요청 시간에 가용수는 100이고, 예약수가 80인 경우, 상기 서버는 상기 통신 요청 시간에 로드가 발생하지 않은 것으로 판단할 수 있다. 또는, 상기 통신 요청 시간에 가용수는 100이고, 예약수가 100인 경우, 상기 서버는 상기 통신 요청 시간에 로드가 발생한 것으로 판단할 수 있다.
다양한 실시예들에 따르면, 상기 서버는 상기 서비스 정보에 기초하여 상기 통신 요청 시간의 로드를 판단할 수 있다. 예를 들면, 상기 서버의 가용수에 대한 상기 서버의 예약수는 서비스 정보에 따라 각각 다르게 설정될 수 있다. 서버의 가용수가 100인 경우, 제1 서비스 정보에 대한 예약수(예: 예약 가능한 수)는 50, 제2 서비스 정보에 대한 예약수는 30, 제3 서비스 정보에 대한 예약수는 20으로 설정될 수 있다. 상기 서비스 정보가 제1 서비스 정보이고, 상기 메모리에 저장된 상기 제1 서비스 정보의 예약수가 40인 경우, 상기 서버는 상기 통신 요청 시간에 로드가 발생하지 않은 것으로 판단할 수 있다. 또는, 상기 서비스 정보가 제3 서비스 정보이고, 상기 메모리에 저장된 상기 제3 서비스 정보의 예약수가 20인 경우, 상기 서버는 상기 통신 요청 시간에 로드가 발생한 것으로 판단할 수 있다.
다양한 실시예들에 따르면, 상기 서버는 상기 서비스 정보에 기초하여 상기 통신 요청 시간에 다른 서버의 로드를 판단할 수 있다. 예를 들면, 서비스에 따라 특정 시각에만 서비스를 요청할 수 밖에 없는 경우도 발생할 수 있다. 이러한 경우에 대비하여 다양한 실시예들에 따르면, 복수의 서버들을 구성할 수 있다. 다만, 복수의 서버들은 모두 사용되지 않고, 필요에 따라 제한적으로 사용될 수 있다. 예를 들면, 상기 서비스 정보가 상기 통신 요청 시간에만 서비스 요청을 처리해야 하는 것인 경우, 상기 서버는 다른 서버의 로드를 판단할 수 있다. 예를 들면, 서버 1의 가용수가 100이고, 상기 통신 요청 시간에 예약수가 100인 경우, 상기 서버(예: 서버 1)는 상기 서버 1에 대해서는 로드가 발생한 것으로 판단할 수 있다. 또는, 서버 2의 가용수가 100이고, 상기 통신 요청 시간에 예약수가 80인 경우, 상기 서버는 상기 서버 2에 대해서는 로드가 발생하지 않은 것으로 판단할 수 있다.
동작 907에서, 상기 서버(예: 시간 예약부(551), 프로세서(120))는 상기 로드 판단 결과를 기반으로 예약 정보를 결정할 수 있다. 상기 서버는 상기 통신 요청 시간에 로드가 발생하지 않은 것으로 판단되면, 상기 확인된 통신 요청 시간을 예약 정보로서 결정할 수 있다. 예를 들어, 상기 통신 요청 시간에 가용수는 100이고, 예약수가 80인 경우, 상기 서버는 상기 통신 요청 시간을 예약 정보로서 결정할 수 있다. 상기 통신 요청 시간이 결정되면, 상기 서버는 상기 통신 요청 시간의 예약수를 하나 증가시켜 상기 메모리에 저장할 수 있다.
다양한 실시예들에 따르면, 상기 서버는 상기 확인된 통신 요청 시간(예: 제1 통신 요청 시간)에 로드가 발생한 것으로 판단되면, 다른 통신 요청 시간(예: 제2 통신 요청 시간)을 확인할 수 있다. 상기 서버는 다른 통신 요청 시간을 확인하기 위해 동작 903 내지 동작 907을 반복적으로 수행할 수 있다. 예를 들어, 상기 통신 요청 시간에 가용수는 100이고, 예약수가 100인 경우, 상기 서버는 상기 통신 요청 시간에 로드가 발생한 것으로 판단할 수 있다. 상기 서버는 상기 다른 통신 요청 시간에 서버의 가용수 또는 예약수를 검색하고, 예약수가 가용수 이하인지 여부에 기초하여 상기 다른 통신 요청 시간을 예약 정보로서 결정할 수 있다.
다양한 실시예들에 따르면, 상기 서버는 상기 통신 요청 시간에 서버의 로드가 발생하지 않은 것으로 판단되면, 상기 확인된 통신 요청 시간과 상기 서버에 대한 접속 정보를 예약 정보로서 결정할 수 있다. 상기 서버 접속 정보는 상기 통신 요청 시간에 서비스 요청을 처리할 서버에 대한 정보일 수 있다. 예를 들면, 서버 1(예: 서버)의 가용수가 100이고, 상기 통신 요청 시간에 예약수가 100인 경우, 상기 서버는 상기 메모리에 저장된 다른 서버(예: 서버 2)의 가용수 또는 예약수를 검색할 수 있다. 상기 서버는 서버 2의 가용수가 100이고, 상기 통신 요청 시간에 예약수가 80인 경우, 상기 서버는 상기 통신 요청 시간에 상기 서버 2를 통해 업데이트할 수 있도록 예약 정보를 결정할 수 있다. 상기 예약 정보에는 통신 요청 시간과 함께 서버 2에 대한 접속 정보가 포함될 수 있다.
동작 909에서, 상기 서버(예: 통신 인터페이스(170)는 상기 예약 정보를 상기 전자 장치로 전송할 수 있다.
한 실시예에 따르면, 전자 장치(101)는 서버(106)로부터 데이터를 수신하는 어플리케이션(예: 어플리케이션 프로그램(147))을 실행할 수 있다. 예를 들면, 어플리케이션은 서버로부터 다운로드받을 수 있는 하나 이상의 어플리케이션일 수 있다. 전자 장치는 어플리케이션의 실행에 응답하여 디스플레이(106)를 통하여 어플리케이션의 메인 화면을 표시할 수 있다. 어플리케이션의 메인 화면에는 서버(106)로부터 획득된 정보를 표시하는 적어도 하나의 영역을 포함하는 인터페이스가 존재할 수 있다. 예를 들면, 카테고리별 추천 어플리케이션, 사용자 추천 어플리케이션, 주간 인기 어플리케이션, 또는 월간 인기 어플리케이션을 표시해주는 영역이 존재할 수 있다. 전자 장치(101)는 어플리케이션의 서로 다른 API(application programming interface)를 통하여 적어도 하나의 서버에 각 영역에 해당하는 정보를 수신하기 위한 서비스 요청을 송신할 수 있다.
한 실시예에 따르면, 서버(106)는 전자 장치(101)로부터 수신한 API의 종류 또는 우선 순위에 기반하여 서비스 요청에 대한 응답 시점을 결정할 수 있다. 예를 들면, 카테고리별 추천 어플리케이션 또는 사용자 추천 어플리케이션과 관련된 정보는 서비스 요청에 즉각적으로 반응하여, 서버(106)는 서비스 요청에 대한 응답을 전자 장치(101)에 전송할 수 있다. 하지만 주간 인기 어플리케이션 또는 월간 인기 어플리케이션과 관련된 정보는 변동 사항이 없을 가능성이 높거나 우선 순위가 낮은 작업일 수 있으므로, 서버(106)는 서비스 요청에 대한 응답을 즉각적으로 수행하지 않을 수 있다.
한 실시예에 따르면, 전자 장치(101)는 주기적으로 서비스 요청을 수행할 수 있다. 예를 들면, 사용자 추천 어플리케이션과 관련된 정보를 서버(106)에 주기적으로 요청할 수 있다. 서버(106)는 서비스 요청에 따른 응답을 즉각적으로 할 수도 있고, 서버(106)의 프로세서가 수행해야 하는 작업량에 기반하여 서비스 요청에 따른 응답을 미룰 수도 있다. 서버(106)는 작업량에 기반하여 서비스 요청의 주기를 변경할 수 있다. 예를 들면, 서버(106)의 프로세서가 수행해야 하는 작업량이 특정 시간에 몰린 경우, 서비스 요청의 주기를 한가한 시간으로 변경할 수 있다. 특정 시간에 수행해야 하는 작업들 중 어떤 작업의 서비스 요청의 주기를 변경할 것인지는 작업 또는 API의 우선 순위에 따라 결정할 수 있다.
한 실시예에 따르면, 서버(106)는 전자 장치(101)에 대응하는 사용자의 컨텍스트에 기반하여 서비스 요청에 대한 응답 시점을 결정할 수 있다. 예를 들면, 사용자가 카테고리별 추천 어플리케이션, 사용자 추천 어플리케이션, 주간 인기 어플리케이션, 및 월간 인기 어플리케이션 중에서 사용자 추천 어플리케이션 영역을 선택하여 하위 화면으로 진입하거나, 추천 어플리케이션 중 어느 하나를 다운받는 빈도수가 높은 경우, 서버(106)는 서비스 요청에 대한 응답 시점의 우선 순위를 높일 수 있다. 반대로, 사용자의 관심이 상대적으로 적거나, 업데이트가 즉각적으로 필요하지 않다고 판단되는 경우, 서버(106)는 서비스 요청에 대한 응답 시점의 우선 순위를 낮출 수 있다.
한 실시예에 따르면, 서버(106)는 복수의 전자 장치들로부터 수신한 서비스 요청에 기반하여 각 서비스 요청의 수행 시점(예: 예약 시간)을 메모리에 저장할 수 있다. 서버(106)는 상기 메모리에 저장된 수행 시점에 기반하여 서비스 요청에 대한 응답을 수행할 시점을 결정할 수 있다. 예를 들면, 서버(106)는 상기 메모리에 저장된 예약 시간 및 상기 예약 시간과 관련된 부하량에 기반하여 상기 서비스 요청과 연관된 통신 요청 시간을 결정할 수 있다.
도 10은 다양한 실시예들에 따른 다양한 방식으로 업데이트를 처리하는 방법을 도시한 흐름도이다.
도 10을 참조하면, 동작 1001에서, 서버(예: 통신 인터페이스(170))는 전자 장치로부터 서비스 요청을 수신할 수 있다. 서비스 요청에는 서비스 정보 및 장치 정보를 포함할 수 있다. 상기 서비스 정보는 업데이트가 필요한 펌웨어 또는 어플리케이션에 대한 버전, 타입, 및 식별자 중 적어도 하나를 포함할 수 있다. 상기 장치 정보는 장치 식별자, 사용자 아이디, 및 전화번호 중 적어도 하나를 포함할 수 있다.
동작 1003에서, 상기 서버(예: 프로세서(120))는 상기 서비스 요청을 기반으로 우선 순위를 적용할 것인지 판단할 수 있다. 상기 우선 순위는 상기 서비스 정보를 기반으로 설정될 수 있다. 예를 들어, 상기 서비스 정보는 서비스의 타입에 따라 사용 패턴 수집 서비스, 최신 정보 제공 서비스, 및 앱 스토어 서비스(예: 어플리케이션 스토어 서비스) 중 적어도 하나로 구분할 것일 수 있다. 상기 사용 패턴 수집 서비스는 전자 장치의 사용자가 어플리케이션을 사용하는 이력을 분석하여 어플리케이션 기능을 개선하기 위한 것이다. 이러한, 상기 사용 패턴 수집 서비스는 전자 장치의 설정에 기초하여 전자 장치별 업데이트 주기를 각각 다르게 설정할 수 있어 우선 순위가 낮을 수 있다. 상기 최신 정보 제공 서비스는 신문, 월간지, 방송 정보를 제공해주는 서비스이다. 상기 최신 정보 제공 서비스는 서버가 전자 장치로 전송할 데이터가 대용량일 수 있어, 전자 장치가 무선 인터넷(예: 와이파이)에 연결된 경우에만 업데이트하도록 설정할 수 있다.
상기 앱 스토어 서비스는 전자 장치에 설치된 어플리케이션들에 대한 최신 정보를 제공해주는 서비스일 수 있다. 예를 들어, 상기 앱 스토어 서비스와 관련된 어플리케이션은 타입(예: 다운로드(Download), 프리로드(Preload))에 따라 서비스 요청 주기를 다르게 설정할 수 있다. 예를 들면, 상기 앱 스토어 서비스와 관련된 어플리케이션들 중 중요도가 높은 어플리케이션에 대해서는 서비스 요청 주기를 짧게 설정할 수 있다. 또는, 사용자 패턴 수집 서비스와 연계하여 어플리케이션의 사용 빈도에 따라 서비스 요청 주기를 짧게 설정할 수도 있다. 또는, 어플리케이션의 프로모션이나 주기적인 업데이트가 있는 경우, 프로모션 시점이나 업데이트 시점을 통신 요청 시간으로 설정할 수 있다. 또는, 특정 시각에 반드시 업데이트해야 하는 어플리케이션(예: 날씨 어플리케이션)의 경우, 특정 시각에 서버를 증설하도록 설정할 수도 있다.
상기 서버는 상기 우선 순위를 적용하지 않는 경우 동작 1005를 수행하고, 우선 순위를 적용하는 경우 동작 1025를 수행할 수 있다.
상기 우선 순위를 적용하지 않는 경우, 동작 1005에서, 상기 서버(예: 프로세서(120))는 최소 서비스 요청 간격 후의 슬롯을 선택할 수 있다. 상기 최소 서비스 요청 간격은 서비스 요청 주기를 기반으로 설정될 수 있으며, 예를 들어, 서비스 요청 주기가 12시간인 경우, 상기 최소 서비스 요청 간격은 12시간일 수 있다. 예를 들면, 상기 서버는 시간(예: 24시간)을 하나 이상의 슬롯(예: 1시간)으로 분할할 수 있다. 즉, 상기 서버는 0시부터 1시까지는 슬롯 1, 1시부터 2시까지는 슬롯 2, 2시부터 3시까지는 슬롯 3 등으로, 하루를 24개의 슬롯으로 분할할 수 있다. 이 경우, 상기 서버는 상기 서비스 요청을 수신한 시점(예: 오전 9시)부터 상기 최소 서비스 요청 간격(예: 12시간) 후의 슬롯(예: 슬롯 21(20시부터 21시))을 선택할 수 있다.
동작 1007에서, 상기 서버(예: 프로세서(120))는 선택된 슬롯의 가용수가 예약수보다 큰지 여부를 판단할 수 있다. 상기 가용수는 서비스 요청을 받을 수 있는 양 또는 수로 해석할 수 있다. 상기 예약수는 서비스 요청을 예약한 양 또는 수로 해석할 수 있다. 상기 서버는 시간 예약 데이터베이스(예: 메모리(130))를 기반으로 상기 선택된 슬롯의 가용수가 예약수보다 큰지 여부를 판단할 수 있다. 상기 서버는 상기 선택된 슬롯의 가용수가 상기 예약수보다 큰 경우 동작 1011을 수행하고, 상기 선택된 슬롯의 가용수가 상기 예약수와 동일한 경우 동작 1009을 수행할 수 있다. 예를 들면, 상기 선택된 슬롯 21의 가용수가 100인 경우, 예약수(예: 99)가 100 이하인 경우 동작 1011을 수행하고, 예약수가 100과 동일한 경우 동작 1009을 수행할 수 있다.
상기 선택된 슬롯의 가용수가 상기 예약수와 동일한 경우 동작 1009에서, 상기 서버는 다른 슬롯을 선택할 수 있다. 예를 들면, 상기 서버는 상기 선택된 슬롯(예: 슬롯 21) 이후의 슬롯(예: 슬롯 22(21시부터 22시)을 선택할 수 있다. 상기 서버는 상기 다른 슬롯이 선택되면 동작 1007을 다시 수행하여, 상기 다른 슬롯의 가용수 또는 예약수를 기반으로 동작 1011을 수행하거나, 동작 1009를 수행할 수 있다. 예를 들면, 상기 서버는 상기 다른 슬롯의 가용수가 상기 예약수보다 큰 경우 동작 1011을 수행하고, 상기 다른 슬롯의 가용수가 상기 예약수와 동일하거나 작은 경우 동작 1009를 수행할 수 있다.
동작 1011에서, 상기 서버(예: 프로세서(120))는 선택된 슬롯의 예약수를 증가시킬 수 있다. 예를 들면, 상기 서버는 하나의 전자 장치에 대한 서비스 요청을 처리하는 것이므로, 상기 예약수를 1 증가시킬 수 있다. 상기 예약수가 증가되면, 상기 서버는 상기 시간 예약 데이터베이스에 저장된 예약수를 갱신할 수 있다. 예를 들면, 동작 1011을 수행하기 전에 예약수가 99인 경우, 동작 1011을 수행한 후의 예약수는 100이 될 수 있다.
동작 1013에서, 상기 서버(예: 프로세서(120)는 예약 정보를 결정할 수 있다. 상기 서버는 상기 선택된 슬롯 내에서 통신 요청 시간을 결정할 수 있다. 예를 들면, 상기 서버는 상기 선택된 슬롯(예: 슬롯 21) 내에서 통신 요청 시간을 20시 5분으로 결정할 수 있다. 상기 예약 정보에는 통신 요청 시간(예: 20시 5분)이 포함될 수 있다.
동작 1015에서, 상기 서버(예: 통신 인터페이스(170))는 상기 예약 정보를 상기 전자 장치로 전송할 수 있다. 상기 전자 장치는 상기 예약 정보를 수신하고, 수신된 예약 정보를 저장할 수 있다.
상기 우선 순위를 적용하는 경우, 동작 1025에서, 상기 서버는 최소 서비스 요청 간격 후의 슬롯을 선택할 수 있다. 동작 1025은 앞서 설명한 동작 1005와 유사하므로, 자세한 설명은 생략한다. 예를 들면, 상기 서버는 시간(예: 24시간)을 하나 이상의 슬롯(예: 1시간)으로 분할하고, 상기 서비스 요청을 수신한 시점(예: 오전 9시)부터 상기 최소 서비스 요청 간격(예: 12시간) 후의 슬롯(예: 슬롯 21(20시부터 21시))을 선택할 수 있다.
동작 1027에서, 상기 서버(예: 프로세서(120)는 상기 선택된 슬롯 내 서비스 정보의 우선 순위를 확인할 수 있다. 상기 우선 순위는 상기에서 설명한 바와 같이, 서비스 정보에 따라 다르게 설정될 수 있다. 예를 들면, 앱 스토어 서비스 > 최신 정보 제공 서비스 > 사용 패턴 수집 서비스 순으로 우선 순위가 높을 수 있다. 또는, 앱 스토어 서비스 > 사용 패턴 수집 서비스 > 최신 정보 제공 서비스 순으로 우선 순위가 높을 수 있다. 또는, 최신 정보 제공 서비스 > 앱 스토어 서비스 > 사용 패턴 수집 서비스 순으로 우선 순위가 높을 수 있다. 다양한 실시예들에 따르면, 동일한 서비스 내에서도 어플리케이션에 따라 우선 순위가 다를 수 있다.
동작 1029에서, 상기 서버(예: 프로세서(120)는 선택된 슬롯의 상기 우선 순위에 대응하는 가용수가 예약수보다 큰지 여부를 판단할 수 있다. 다양한 실시예들에 따르면, 상기 서버는 하나의 슬롯의 가용수를 우선 순위를 기반으로 각각 다르게 할당할 수 있다. 예를 들어, 상기 서버는 슬롯의 가용수가 100인 경우, 제1 우선 순위에 대한 가용수를 50으로 할당하고, 제2 우선 순위에 대한 가용수를 30으로 할당하며, 제3 우선 순위에 대한 가용수를 20으로 할당할 수 있다. 이 경우, 동일한 슬롯 내에서 각 서비스에 할당된 가용수가 달라지므로, 각 서비스의 예약수도 가용수에 따라 달라질 수 있다.
다양한 실시예에 따르면, 각 우선 순위에 해당하는 서비스는 하나이거나, 하나 이상일 수 있다. 예를 들어, 슬롯의 가용수를 세가지 우선 순위로 분할한 경우, 첫번째 우선 순위에 해당하는 서비스(또는 어플리케이션)는 10개, 두번째 우선 순위에 해당하는 서비스는 50개, 세번째 우선 순위에 해당하는 서비스는 100개일 수 있다. 이는 이해를 돕기 위한 것이지 우선 순위에 해당하는 서비스의 개수가 한정되는 것은 아니다.
상기 시간 예약 데이터베이스는 각 슬롯의 우선 순위별 가용수 또는 예약수를 저장할 수 있다. 예를 들면, 상기 서버는 동작 1001에서 제1 서비스에 대해서 서비스 요청을 수신한 경우, 제1 서비스의 우선 순위를 확인하고, 상기 선택된 슬롯의 상기 제1 서비스의 우선 순위에 할당된 가용수 또는 예약수를 상기 시간 예약 데이터베이스에서 검색할 수 있다. 상기 서버는 상기 제1 서비스의 우선 순위에 할당된 가용수가 상기 예약수보다 큰 경우 동작 1033을 수행하고, 상기 선택된 슬롯의 가용수가 상기 예약수와 동일한 경우 동작 1031을 수행할 수 있다. 예를 들면, 상기 제1 서비스의 우선 순위에 할당된 가용수가 50이고, 상기 예약수가 40인 경우 동작 1033을 수행하고, 예약수가 50인 경우 동작 1031을 수행할 수 있다.
상기 선택된 슬롯의 가용수가 상기 예약수와 동일한 경우 동작 1031에서, 상기 서버는 다른 슬롯을 선택할 수 있다. 예를 들면, 상기 서버는 상기 선택된 슬롯(예: 슬롯 21) 이후의 슬롯(예: 슬롯 22(21시부터 22시)을 선택할 수 있다. 상기 서버는 상기 다른 슬롯이 선택되면 동작 1027을 다시 수행하여, 상기 다른 슬롯 내 서비스의 우선 순위를 기반으로 동작 1029를 수행하거나, 동작 1031을 수행할 수 있다. 예를 들면, 상기 서버는 상기 다른 슬롯 내 서비스의 우선 순위 가용수가 상기 예약수보다 큰 경우 동작 1033을 수행하고, 상기 다른 슬롯의 서비스의 우선 순위 가용수가 상기 예약수와 동일한 경우 동작 1031을 수행할 수 있다.
동작 1033에서, 상기 서버(예: 프로세서(120))는 선택된 슬롯 내 우선 순위에 대응하는 예약수를 증가시킬 수 있다. 예를 들면, 상기 서버는 하나의 전자 장치에 대한 서비스 요청을 처리하는 것이므로, 상기 예약수를 1 증가시킬 수 있다. 상기 예약수가 증가되면, 상기 서버는 상기 시간 예약 데이터베이스에 저장된 슬롯 내 우선 순위의 예약수를 갱신할 수 있다. 예를 들면, 동작 1033을 수행하기 전에 예약수가 40인 경우, 동작 1033을 수행한 후의 예약수는 41이 될 수 있다.
동작 1035에서, 상기 서버(예: 프로세서(120))는 예약 정보를 결정할 수 있다. 상기 서버는 상기 선택된 슬롯 내에서 통신 요청 시간을 결정할 수 있다. 예를 들면, 상기 서버는 상기 선택된 슬롯(예: 슬롯 21) 내에서 통신 요청 시간을 20시 10분으로 결정할 수 있다. 상기 예약 정보에는 통신 요청 시간(예: 20시 10분)이 포함될 수 있다.
동작 1037에서, 상기 서버(예: 통신 인터페이스(170))는 상기 예약 정보를 상기 전자 장치로 전송할 수 있다. 상기 전자 장치는 상기 예약 정보를 수신하고, 수신된 예약 정보를 저장할 수 있다.
도 11은 다양한 실시예들에 따른 균등하게 슬롯을 선택하는 일례를 도시한 도면이다.
도 11을 참조하면, 서버(예: 프로세서(120))는 시간을 복수의 슬롯들(1110-1106M)들로 분할할 수 있다. 예를 들면, 상기 서버는 시간을 슬롯 N(1110), 슬롯 N+1(1120), 슬롯 N+2(1130), 슬롯 N+3(1140), 슬롯 N+4(1150), ... 슬롯 N+M(1160M)으로 분할할 수 있다. 상기 서버는 전자 장치로부터 슬롯 N(1110)의 현재 시간(1111)에 서비스 요청을 수신할 수 있다. 상기 서버는 현재 시간(1111)으로부터 최소 서비스 요청 간격(1180) 이후의 슬롯을 선택할 수 있다. 예를 들면, 선택 가능한 슬롯(1190)은 슬롯 N+2(1130), 슬롯 N+3(1140), 슬롯 N+4(1150) 중 적어도 하나를 포함할 수 있다. 상기 서버는 슬롯 N+2(1130)를 선택하고, 슬롯 N+2(1130)의 가용수 또는 예약수를 기반으로 통신 요청 시간(1131)을 결정할 수 있다. 또는, 상기 서버는 슬롯 N+4(1150)를 선택하고, 슬롯 N+4(1150)의 가용수 또는 예약수를 기반으로 통신 요청 시간(1155)을 결정할 수 있다.
다양한 실시예들에 따르면, 상기 서버는 슬롯 N+4(1150)의 시작 시간과 종료 시간을 기반으로 슬롯 N+4(1150)를 다시 복수 개의 작은 시간 단위로 분할할 수 있다. 예를 들면, 상기 서버는 슬롯 N+4(1150)의 시작 시간부터 종료 시간까지 균등하게 또는 불균등하게 시간을 분할할 수 있다. 상기 서버는 슬롯 N+4(1150)의 시작 시간부터 종료 시간까지 제1 시간 간격(ti1)으로 분할하고, 분할된 시간 간격 시점(1151, 1152, 1153, 1155 등)에 서비스 요청이 예약되었는지 판단할 수 있다. 상기 서버는 분할된 시간 간격 시점의 예약 여부를 순차적으로 검색하고, 예약되어 있지 않은 시간(예: 1155)을 통신 요청 시간(1155)으로 결정할 수 있다.
상기 서버는 슬롯 N+4(1150)를 제1 시간 간격(ti1)으로 분할한 시간 간격 시점에 모두 서비스 요청이 예약된 경우, 다시 슬롯 N+4(1150)의 시작 시간에서 일정 시간 뒤인 시점(1170)부터 제2 시간 간격(ti2)으로 시간을 분할하고, 분할된 시간 간격 시점에 서비스 요청이 예약되었는지 판단할 수 있다. 다양한 실시예들에 따르면, 상기 서버는 제1 시간 간격(예: ti1)과 동일하게 제2 시간 간격(ti2)을 분할할 수도 있고, 제1 시간 간격(예: ti1)과 다르게 제2 시간 간격(ti2)을 분할할 수도 있다.
다양한 실시예들에 따르면, 상기 서버는 다양한 방법으로 슬롯 내 예약 시점이 서로 겹치지 않도록 통신 요청 시간을 결정할 수 있다.
도 12는 다양한 실시예들에 따른 우선 순위에 기초하여 슬롯을 선택하는 일례를 도시한 도면이다.
도 12를 참조하면, 서버(예: 프로세서(120))는 하나의 슬롯의 가용수를 우선 순위별로 다르게 할당할 수 있다. 예를 들면, 슬롯 1(1200)은 총 100개의 가용수를 포함할 수 있다. 상기 서버는 슬롯 1(1200)에 대해서 제1 우선 순위(1210)에 해당하는 가용수를 50, 제2 우선 순위(1220)에 해당하는 가용수를 30, 제3 우선 순위(1230)에 해당하는 가용수를 20으로 할당할 수 있다. 또한, 슬롯 2(1250)는 총 100개의 가용수를 포함할 수 있다. 상기 서버는 슬롯 2(1250)에 대해서 제1 우선 순위(1210)에 해당하는 가용수를 50, 제2 우선 순위(1220)에 해당하는 가용수를 30, 제3 우선 순위(1230)에 해당하는 가용수를 20으로 할당할 수 있다.
도면에서는 이해를 돕기 위해 어플리케이션들 별로 가용수를 할당하는 것으로 표기한다. 즉, 어플리케이션 1(1210)은 제1 우선 순위에 해당하고, 어플리케이션 2(1220)은 제2 우선 순위에 해당하며, 어플리케이션 3(1230)은 제3 우선 순위에 해당할 수 있다. 그러나, 하나의 우선 순위에 포함되는 어플리케이션은 하나이거나 하나 이상일 수 있다. 다양한 실시예들에 따르면, 복수의 슬롯의 각 가용수는 동일할 수도 있고 다를 수도 있다. 또는, 슬롯의 우선 순위별 가용수는 동일할 수도 있고 다를 수도 있다.
상기 서버의 시간 예약 데이터베이스는 각 슬롯별 가용수 또는 예약수, 하나의 슬롯 내 어플리케이션별 가용수 또는 예약수를 저장할 수 있다. 예를 들면, 상기 시간 예약 데이터베이스는 슬롯 1(1200)에 대한 가용수(100), 예약수(80)를 포함하는 총계(1240)를 저장할 수 있다. 구체적으로, 상기 시간 예약 데이터베이스는 슬롯 1(1200) 내에서 어플리케이션 1(1210)에 대한 가용수(50) 및 예약수(40)가 저장되고, 어플리케이션 2(1220)에 대한 가용수(30) 및 예약수(30)가 저장되며, 어플리케이션 3(1230)에 대한 가용수(20) 및 예약수(10)가 저장될 수 있다. 또한, 상기 시간 예약 데이터베이스는 슬롯 2(1250)에 대한 가용수(100), 예약수(0)를 포함하는 총계(1240)를 저장할 수 있다. 상기 시간 예약 데이터베이스는 슬롯 2(1250) 내에서 어플리케이션 1(1210)에 대한 가용수(50) 및 예약수(0)가 저장되고, 어플리케이션 2(1220)에 대한 가용수(30) 및 예약수(0)가 저장되며, 어플리케이션 3(1230)에 대한 가용수(20) 및 예약수(0)가 저장될 수 있다.
이 경우, 상기 서버는 전자 장치로부터 수신된 서비스 요청이 수신되면, 최소 통신 요청 시간 간격 후의 슬롯으로 슬롯 1(1200)을 선택할 수 있다. 상기 서버는 슬롯 1(1200) 내에서 서비스 정보의 우선 순위를 확인하고, 상기 확인된 우선 순위가 어플리케이션 1(1210)에 해당하면, 슬롯 1(1200) 내에서 어플리케이션 1(1210)의 가용수 또는 예약수를 검색할 수 있다. 슬롯 1(1200) 내 어플리케이션 1(1210)의 가용수가 50이고, 예약수가 40인 경우, 상기 서버는 예약수(40)가 가용수(50) 이하이므로, 슬롯 1(1200) 내 어느 하나의 시점을 통신 요청 시간(예: 1211, 1212)으로 결정할 수 있다.
또는, 상기 서버는 전자 장치로부터 수신된 서비스 요청이 수신되면, 최소 통신 요청 시간 간격 후의 슬롯으로 슬롯 1(1200)을 선택할 수 있다. 상기 서버는 슬롯 1(1200) 내에서 서비스 정보의 우선 순위를 확인하고, 상기 확인된 우선 순위가 어플리케이션 2(1220)에 해당하면, 슬롯 1(1200) 내에서 어플리케이션 2(1210)의 가용수 또는 예약수를 검색할 수 있다. 슬롯 1(1200) 내 어플리케이션 2(1220)의 가용수가 30이고, 예약수가 30인 경우, 상기 서버는 예약수(30)와 가용수(30)가 동일하므로, 다른 슬롯을 선택할 수 있다. 상기 서버는 다른 슬롯으로 슬롯 2(1220)를 선택할 수 있다. 상기 서버는 슬롯 2(1250) 내에서 어플리케이션 2(1220)의 가용수 또는 예약수를 검색할 수 있다. 슬롯 2(1250) 내 어플리케이션 2(1220)의 가용수가 30이고, 예약수가 0인 경우, 상기 서버는 예약수(0)가 가용수(30) 이하이므로, 슬롯 2(1250) 내 어느 하나의 시점을 통신 요청 시간(예: 1221, 1222)으로 결정할 수 있다.
또는, 상기 서버는 전자 장치로부터 수신된 서비스 요청이 수신되면, 최소 통신 요청 시간 간격 후의 슬롯으로 슬롯 1(1200)을 선택할 수 있다. 상기 서버는 슬롯 1(1200) 내에서 서비스 정보의 우선 순위를 확인하고, 상기 확인된 우선 순위가 어플리케이션 3(1230)에 해당하면, 슬롯 1(1200) 내에서 어플리케이션 3(1230)의 가용수 또는 예약수를 검색할 수 있다. 슬롯 1(1200) 내 어플리케이션 3(1230)의 가용수가 20이고, 예약수가 10인 경우, 상기 서버는 예약수(10)가 가용수(20) 이하이므로, 슬롯 1(1200) 내 어느 하나의 시점을 통신 요청 시간(예: 1231, 1232)으로 결정할 수 있다.
다양한 실시예들에 따르면, 상기 서버는 서비스 요청의 시간 예약에 대한 우선 순위 적용 방법을 다양하게 수행할 수 있다. 예를 들면, 하나의 슬롯의 가용수와 예약수를 n개의 어플리케이션에 대해 우선 순위별로 가용수에 대한 비율을 결정할 수 있다. 어플리케이션들의 우선 순위 비율의 합은 100보다 작거나 같을 수 있다. 예를 들면, n번째 어플리케이션의 가용수는 슬롯의 가용수에 n번째 우선 순위 비율을 곱하여 산출될 수 있다. 상기 서버는 n개의 어플리케이션들을 우선 순위가 높은 순서로 정렬하고, 정렬된 어플리케이션들 중 정렬된 순서(예: 총 1000개 중에 101번째)가 우선 순위 비율일 수 있다. 또한, n번째 어플리케이션의 예약수는 n번째 어플리케이션의 가용수보다 작거나 같을 수 있다. 따라서, 슬롯의 예약수는 n개의 어플리케이션의 예약수보다 작거나 같을 수 있다.
다양한 실시예들에 따르면, 상기 서버는 슬롯 내 우선 순위별 가용수를 가변적으로 조정할 수 있다. 예를 들면, 상기 서버는 서비스 운영 중에 각 서비스(예: 어플리케이션)별 응답 속도를 산출할 수 있다. 상기 응답 속도는 상기 서비스 요청에 대한 응답을 처리하는 속도일 수 있다. 상기 서버는 응답 속도가 기준치 미만으로 지연되는 경우, 응답 속도가 지연되는 서비스의 가용수를 동적으로 늘리고, 응답 속도가 지연되지 않는 서비스의 가용수를 0에 가깝게 변경할 수 있다. 예를 들면, 상기 서버는 어플리케이션 2(1220)에 대한 응답 속도가 지연되는 경우, 어플리케이션 2(1220)에 대한 가용수를 50으로 변경하고, 어플리케이션 1(1210)에 대한 가용수를 40으로 변경하며, 어플리케이션 3(1230)에 대한 가용수를 10으로 변경할 수 있다. 이 경우, 물리적인 서버 또는 서버 인스턴스 차원의 변경없이 문제가 되는 어플리케이션들의 동작을 제한할 수 있다.
도 13은 다양한 실시예들에 따른 업데이트 처리 방법을 도시한 흐름도이다.
도 13을 참조하면, 동작 1301에서, 전자 장치(예: 프로세서(120))는 서비스 요청 이벤트 발생을 감지할 수 있다. 예를 들면, 상기 서비스 요청 이벤트는 부팅, 무선 인터넷 연결, 어플리케이션의 타입, 어플리케이션의 우선순위, 사용자 설정, 및 장치 설정 중 적어도 하나를 포함할 수 있다. 예를 들면, 상기 프로세서는 상기 전자 장치에 전원이 인가되어 부팅되면 서비스 요청 이벤트가 발생한 것으로 감지할 수 있다. 또는, 상기 프로세서는 상기 전자 장치가 무선 인터넷에 연결되면, 서비스 요청 이벤트가 발생한 것으로 감지할 수 있다. 또는, 상기 어플리케이션의 타입이 무선 인터넷 연결 시 업데이트 요청으로 설정된 경우, 상기 프로세서는 상기 전자 장치가 무선 인터넷에 연결되면, 서비스 요청 이벤트가 발생한 것으로 감지할 수 있다. 또는, 상기 사용자 설정 또는 장치 설정이 무선 인터넷 연결 시 업데이트 요청으로 설정된 경우, 상기 프로세서는 상기 전자 장치가 무선 인터넷에 연결되면, 서비스 요청 이벤트가 발생한 것으로 감지할 수 있다.
상기 서비스 요청 이벤트가 발생되면, 동작 1303에서, 상기 프로세서(예: 시간 예약 스케줄링 에이전트1(511))는 메모리(예: 메모리(130))에 예약 정보가 저장되어 있는지 판단할 수 있다. 상기 예약 정보는 통신 요청 시간 또는 서버 접속 정보를 포함할 수 있다. 상기 프로세서는 상기 예약 정보가 저장되어 있는 경우 동작 1305을 수행하고, 상기 예약 정보가 저장되어 있지 않은 경우 동작 1311을 수행할 수 있다.
상기 예약 정보가 저장되어 있는 경우 동작 1305에서, 상기 프로세서(예: 시간 예약 스케줄링 에이전트1(511))는 상기 예약 정보의 통신 요청 시간을 확인할 수 있다. 상기 통신 요청 시간은 다음에 서비스를 요청할 예약 시간으로, 서버(예: 서버 1(820))에서 전송한 것일 수 있다. 상기 통신 요청 시간은 특정 시각(예: 오전 9시)이거나, 일정 주기(예: 매일 설정된 시간, 일주일 간격 등)를 가질 수도 잇다.
동작 1307에서, 상기 프로세서(예: 시간 예약 스케줄링 에이전트1(511))는 상기 통신 요청 시간이 현재 시간과 일치하는지 여부를 판단할 수 있다. 상기 프로세서는 상기 통신 요청 시간이 현재 시간과 일치하는 경우 동작 1311을 수행하고, 상기 통신 요청 시간이 현재 시간과 일치하지 않는 경우 동작 1309을 수행할 수 있다.
상기 통신 요청 시간이 현재 시간과 일치하지 않는 경우 동작 1309에서, 상기 프로세서(예: 시간 예약 스케줄링 에이전트1(511))는 상기 통신 요청 시간까지 대기할 수 있다. 상기 통신 요청 시간은 서버의 부하를 분산시키기 위해 서버에서 설정하여 보내준 것으로, 상기 프로세서는 상기 통신 요청 시간까지 기다렸다가 서비스를 요청할 수 있다. 예외적으로, 상기 프로세서는 사용자의 설정 또는 장치 설정에 따라 상기 통신 요청 시간까지 대기하지 않고, 서버로 서비스 요청을 전송할 수도 있다.
동작 1311에서, 상기 프로세서(예: 시간 예약 스케줄링 에이전트1(511))는 통신 인터페이스(170)를 통해 서버로 서비스 요청(예: 업데이트 요청)을 전송할 수 있다. 상기 서비스 요청에는 서비스 정보 및 장치 정보를 포함할 수 있다. 상기 서비스 정보는 업데이트가 필요한 펌웨어 또는 어플리케이션에 대한 버전, 타입, 및 식별자 중 적어도 하나를 포함할 수 있다. 상기 장치 정보는 상기 전자 장치에 대한 식별자, 사용자 아이디, 및 상기 전자 장치에 대한 전화번호 중 적어도 하나를 포함할 수 있다. 상기 프로세서는 상기 메모리에 저장된 예약 정보에 서버 접속 정보가 포함되어 있는 경우, 서버 접속 정보를 이용하여 서비스 요청을 전송할 서버를 결정할 수 있다. 예를 들어, 상기 서버 접속 정보가 서버 2(예: 서버 2(820))에 대한 접속 정보인 경우, 상기 프로세서는 서버 2로 상기 서비스 요청을 전송할 수 있다.
동작 1313에서, 상기 프로세서(예: 시간 예약 스케줄링 에이전트1(511))는 통신 인터페이스(170)를 통해 상기 서버로부터 예약 정보를 포함하는 데이터를 수신할 수 있다. 통신 인터페이스(170)는 상기 서버로부터 데이터를 수신하고, 수신된 데이터를 프로세서로 전달할 수 있다.
동작 1315에서, 상기 프로세서는 상기 수신된 데이터를 처리할 수 있다. 예를 들면, 상기 프로세서는 상기 업데이트 데이터를 이용하여 어플리케이션을 최신 버전인 2.1.4로 업데이트할 수 있다. 또는 상기 프로세서는 날씨와 관련된 어플리케이션인 경우, 상기 업데이트 데이터를 이용하여 현재 날짜(예: 업데이트 요청한 날짜)에 해당하는 날씨 정보로 업데이트할 수 있다. 상기 프로세서는 설정에 따라 현재 날짜와 더불어 현재 위치에 해당하는 지역의 날씨 정보를 업데이트할 수 있다.
동작 1317에서, 상기 프로세서(예: 시간 예약 스케줄링 에이전트1(511))는 상기 예약 정보를 설정할 수 있다. 상기 프로세서는 상기 메모리에 저장된 예약 정보를 갱신할 수 있다. 즉, 상기 프로세서는 저장부에 원래 저장되어 있던 예약 정보를 삭제하고, 최근 수신된 예약 정보를 저장할 수 있다.
다양한 실시예들에 따른 전자 장치의 서비스 처리 방법은 복수의 외부 장치들 중 적어도 하나의 외부 장치로부터 서비스 요청을 수신하는 동작, 메모리에 저장된 예약 시간 및 상기 예약 시간과 관련된 부하량에 기초하여 상기 서비스 요청과 연관된 통신 요청 시간을 결정하는 동작, 및 상기 적어도 하나의 외부 장치로 상기 통신 요청 시간을 전송하는 동작을 포함할 수 있다.
상기 판단하는 동작은, 상기 전자 장치의 메모리에 저장된 예약 시간의 가용수 또는 예약수를 검색하는 동작, 및 상기 검색된 가용수 및 예약수를 기반으로 상기 통신 요청 시간의 부하량을 판단하는 동작을 포함할 수 있다.
상기 결정하는 동작은, 상기 복수의 외부 장치들과 통신을 수행할 예약 시간 중 미리 정한 조건을 만족하는 시간을 상기 통신 요청 시간으로 결정하는 동작을 포함할 수 있다.
상기 결정하는 동작은, 기준값 보다 적은 작업을 처리하는 시간을 상기 통신 요청 시간으로 결정하는 동작을 포함할 수 있다.
상기 결정하는 동작은, 시간을 하나 이상으로 분할한 슬롯들 중에서 최소 서비스 요청 간격 후의 슬롯을 선택하는 동작, 및 상기 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하는 동작을 포함할 수 있다.
상기 결정하는 동작은 상기 선택된 슬롯의 예약수가 가용수 이하인지 판단하는 동작, 및 상기 예약수가 상기 가용수 미만인 경우, 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하는 동작을 포함할 수 있다.
상기 결정하는 동작은 상기 선택된 슬롯의 예약수가 가용수 미만인지 판단하는 동작, 상기 예약수가 상기 가용수와 동일한 경우, 다른 슬롯을 선택하는 동작, 및 상기 선택된 다른 슬롯 내에서 상기 통신 요청 시간을 결정하는 동작을 포함할 수 있다.
상기 결정하는 동작은 시간을 하나 이상으로 분할한 슬롯들 중에서 최소 서비스 요청 간격 후의 슬롯을 선택하는 동작, 상기 선택된 슬롯 내에서 상기 서비스 요청에 포함된 서비스 정보의 우선 순위를 확인하는 동작, 및 상기 우선 순위에 대응하는 가용수 및 예약수를 기반으로 상기 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하는 동작을 포함할 수 있다.
상기 결정하는 동작은, 상기 우선 순위에 대응하는 예약수가 가용수 이하인지 판단하는 동작, 상기 예약수가 상기 가용수 미만인 경우, 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하는 동작을 포함할 수 있다.
상기 결정하는 동작은, 상기 우선 순위에 대응하는 예약수가 가용수 미만인지 판단하는 동작, 상기 예약수가 상기 가용수와 동일한 경우, 다른 슬롯을 선택하는 동작, 상기 선택된 다른 슬롯 내에서 상기 서비스 요청에 포함된 서비스 정보의 우선 순위를 확인하는 동작, 및 상기 우선 순위에 대응하는 가용수 및 예약수를 기반으로 상기 다른 슬롯 내에서 상기 통신 요청 시간을 결정하는 동작을 포함할 수 있다.
다양한 실시예들에 따른 컴퓨터 판독 가능한 기록매체는 복수의 외부 장치들 중 적어도 하나의 외부 장치로부터 서비스 요청을 수신하는 동작, 메모리에 저장된 예약 시간 및 상기 예약 시간과 관련된 부하량에 기반하여 상기 서비스 요청과 연관된 통신 요청 시간을 결정하는 동작, 및 상기 적어도 하나의 외부 장치로 상기 통신 요청 시간을 전송하는 동작을 실행하기 위한 프로그램을 포함할 수 있다.
그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
510, 520, 530: 클라이언트
511, 521, 531N: 시간 예약 스케줄링 에이전트
512, 522, 532N: 저장부
550: 서버
551: 시간 예약부 552: 시간 예약 모니터링부
553: 시간 예약 정책부 554: 시간 예약 데이터베이스

Claims (20)

  1. 전자 장치에 있어서,
    통신 인터페이스;
    복수의 외부 장치들과 통신을 수행할 예약 시간을 저장하도록 설정된 메모리; 및
    상기 통신 인터페이스 및 상기 메모리와 기능적으로 연결된 프로세서를 포함하고, 상기 프로세서는,
    상기 통신 인터페이스를 통해 상기 복수의 외부 장치들 중 적어도 하나의 외부 장치로부터 서비스 요청을 수신하고,
    상기 메모리에 저장된 상기 예약 시간 및 상기 예약 시간과 관련된 부하량에 기반하여 상기 서비스 요청과 연관된 통신 요청 시간을 결정하고, 및
    상기 결정된 통신 요청 시간을 상기 통신 인터페이스를 통해 상기 적어도 하나의 외부 장치에 전송하도록 설정된 전자 장치.
  2. 제1항에 있어서, 상기 프로세서는,
    상기 서비스 요청에 기반하여 통신 요청 시간을 확인하고, 및
    상기 복수의 외부 장치들과 통신을 수행할 예약 시간 및 상기 예약 시간에 상기 프로세서의 부하량에 기반하여 상기 통신 요청 시간을 결정하도록 설정된 전자 장치.
  3. 제1항에 있어서, 상기 프로세서는,
    상기 복수의 외부 장치들과 통신을 수행할 예약 시간 중 미리 정한 조건을 만족하는 시간을 상기 통신 요청 시간으로 결정하도록 설정된 전자 장치.
  4. 제1항에 있어서, 상기 프로세서는,
    상기 프로세서와 관련된 부하량 중 기준값 보다 적은 작업을 처리하는 시간을 상기 통신 요청 시간으로 결정하도록 설정된 전자 장치.
  5. 제1항에 있어서, 상기 프로세서는,
    상기 서비스 요청에 포함된 서비스 정보 및 장치 정보를 기반으로 상기 통신 요청 시간을 선택하도록 설정된 전자 장치.
  6. 제1항에 있어서,
    상기 프로세서는,
    상기 예약 시간의 가용수 또는 예약수를 기반으로 상기 통신 요청 시간을 선택하도록 설정된 전자 장치.
  7. 제1항에 있어서, 상기 프로세서는,
    상기 서비스 요청에 포함된 서비스 정보를 기반으로 우선 순위 적용 여부를 판단하고, 상기 판단 결과에 기반하여 슬롯을 선택하도록 설정된 전자 장치.
  8. 제1항에 있어서, 상기 프로세서는,
    시간을 복수의 슬롯으로 분할하고,
    분할된 슬롯들 중에서 최소 서비스 요청 간격 후의 슬롯을 선택하고, 및
    선택된 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정된 전자 장치.
  9. 제8항에 있어서, 상기 프로세서는,
    상기 선택된 슬롯의 예약수가 가용수 이하인지 판단하고, 및
    상기 예약수가 상기 가용수 미만인 경우, 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정된 전자 장치.
  10. 제8항에 있어서, 상기 프로세서는,
    상기 선택된 슬롯의 예약수가 가용수 미만인지 판단하고,
    상기 예약수가 상기 가용수와 동일한 경우, 다른 슬롯을 선택하고, 및
    선택된 다른 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정된 전자 장치.
  11. 제1항에 있어서, 상기 프로세서는,
    시간을 복수의 슬롯으로 분할하고,
    분할된 슬롯들 중에서 최소 서비스 요청 간격 후의 슬롯을 선택하고,
    선택된 슬롯 내에서 상기 서비스 요청에 포함된 서비스 정보의 우선 순위를 확인하고, 및
    상기 우선 순위에 대응하는 가용수 또는 예약수를 기반으로 상기 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정된 전자 장치.
  12. 제11항에 있어서, 상기 프로세서는,
    상기 우선 순위에 대응하는 예약수가 가용수 이하인지 판단하고, 및
    상기 예약수가 상기 가용수 미만인 경우, 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정된 전자 장치.
  13. 제11항에 있어서, 상기 프로세서는,
    상기 우선 순위에 대응하는 예약수가 가용수 미만인지 판단하고,
    상기 예약수가 상기 가용수와 동일한 경우, 다른 슬롯을 선택하고,
    선택된 다른 슬롯 내에서 상기 서비스 요청에 포함된 서비스 정보의 우선 순위를 확인하고, 및
    상기 우선 순위에 대응하는 가용수 또는 예약수를 기반으로 상기 다른 슬롯 내에서 상기 통신 요청 시간을 결정하도록 설정된 전자 장치.
  14. 서비스 요청에 관련된 예약 정보를 저장하도록 설정된 메모리; 및
    상기 메모리와 기능적으로 연결된 프로세서를 포함하고,
    상기 프로세서는,
    서비스 요청 이벤트의 검출에 따라 상기 메모리에 상기 예약 정보가 저장되어 있는지 판단하고, 및
    상기 판단 결과를 기반으로 상기 예약 정보에 포함된 통신 요청 시간 또는 상기 서비스 요청 이벤트의 검출 시간에 외부 장치로 서비스 요청을 전송하도록 설정된 전자 장치.
  15. 제14항에 있어서, 상기 프로세서는,
    상기 메모리에 예약 정보가 저장되어 있는 경우, 현재 시간과 상기 예약 정보에 포함된 통신 요청 시간을 비교하고, 및
    상기 현재 시간이 상기 통신 요청 시간과 일치하는 경우 상기 서비스 요청을 전송하도록 설정된 전자 장치.
  16. 제14항에 있어서, 상기 프로세서는,
    상기 메모리에 예약 정보가 저장되어 있지 않은 경우, 상기 서비스 요청 이벤트의 검출 시간에 상기 서비스 요청을 전송하도록 설정된 전자 장치.
  17. 복수의 외부 장치들 중 적어도 하나의 외부 장치로부터 서비스 요청을 수신하는 동작;
    메모리에 저장된 예약 시간 및 상기 예약 시간과 관련된 부하량에 기반하여 상기 서비스 요청과 연관된 통신 요청 시간을 결정하는 동작; 및
    상기 적어도 하나의 외부 장치로 상기 통신 요청 시간을 전송하는 동작을 포함하는 서비스 처리 방법.
  18. 제17항에 있어서, 상기 결정하는 동작은,
    프로세서의 부하량 중 기준값 보다 적은 작업을 처리하는 시간을 상기 서비스 요청과 연관된 통신 요청 시간으로 결정하는 동작을 포함하는 서비스 처리 방법.
  19. 제17항에 있어서, 상기 결정하는 동작은,
    시간을 하나 이상으로 분할한 슬롯들 중에서 최소 서비스 요청 간격 후의 슬롯을 선택하는 동작;
    상기 선택된 슬롯의 예약수가 가용수 이하인지 판단하는 동작; 및
    상기 예약수가 상기 가용수 미만인 경우, 선택된 슬롯 내에서 상기 통신 요청 시간을 결정하는 동작을 포함하는 서비스 처리 방법.
  20. 제19항에 있어서, 상기 결정하는 동작은,
    상기 예약수가 상기 가용수와 동일한 경우, 다른 슬롯을 선택하는 동작; 및
    상기 선택된 다른 슬롯 내에서 상기 통신 요청 시간을 결정하는 동작을 포함하는 서비스 처리 방법.
KR1020150131047A 2015-09-16 2015-09-16 서비스 처리 방법 및 이를 구현하는 전자 장치 KR20170033121A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150131047A KR20170033121A (ko) 2015-09-16 2015-09-16 서비스 처리 방법 및 이를 구현하는 전자 장치
US15/267,587 US20170078160A1 (en) 2015-09-16 2016-09-16 Method for processing services and electronic device for the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150131047A KR20170033121A (ko) 2015-09-16 2015-09-16 서비스 처리 방법 및 이를 구현하는 전자 장치

Publications (1)

Publication Number Publication Date
KR20170033121A true KR20170033121A (ko) 2017-03-24

Family

ID=58237468

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150131047A KR20170033121A (ko) 2015-09-16 2015-09-16 서비스 처리 방법 및 이를 구현하는 전자 장치

Country Status (2)

Country Link
US (1) US20170078160A1 (ko)
KR (1) KR20170033121A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020050533A1 (en) * 2018-09-06 2020-03-12 Samsung Electronics Co., Ltd. Electronic device for supporting access to wireless media using target wake time (twt) defined in ieee 802.11 standard
KR20210002069A (ko) * 2019-01-03 2021-01-06 네이버랩스 주식회사 엔드 디바이스, 엔드 디바이스를 제어하기 위한 에지 서버 및 클라우드 서버를 포함하는 3자간 통신 시스템, 및 그의 동작 방법

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940670B2 (en) 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized processing of data by networked computing resources
WO2011069234A1 (en) * 2009-12-10 2011-06-16 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US10728727B2 (en) * 2016-03-04 2020-07-28 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Systems and methods for reducing interference in wireless communication among computing devices
US10499424B2 (en) * 2017-02-03 2019-12-03 Nokia Solutions And Networks Oy Scheduling request arrangement for new radio
US10824412B2 (en) * 2018-04-27 2020-11-03 Nutanix, Inc. Method and apparatus for data driven and cluster specific version/update control
US10992741B2 (en) 2018-08-13 2021-04-27 Wickr Inc. System and method for providing a configuration file to client devices
US11425122B2 (en) * 2018-08-13 2022-08-23 Amazon Technologies, Inc. System and method for providing a configuration file to client devices
US10609530B1 (en) * 2019-03-27 2020-03-31 Verizon Patent And Licensing Inc. Rolling out updated network functions and services to a subset of network users
CN110099122B (zh) * 2019-05-07 2020-05-15 北京字节跳动网络技术有限公司 用于发送网络请求的方法和装置
US11140231B2 (en) 2020-02-07 2021-10-05 Verizon Patent And Licensing Inc. Mechanisms for enabling negotiation of API versions and supported features
KR20210123859A (ko) 2020-04-06 2021-10-14 삼성전자주식회사 전자 장치 및 그의 제어 방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571215B1 (en) * 1997-01-21 2003-05-27 Microsoft Corporation System and method for generating a schedule based on resource assignments
US20020184369A1 (en) * 2001-05-31 2002-12-05 Parkinson Steven William Appointment scheme for redistributing service access
GB0308121D0 (en) * 2003-04-09 2003-05-14 Ibm Method and apparatus for data logging
US8831026B2 (en) * 2004-03-19 2014-09-09 International Business Machines Corporation Method and apparatus for dynamically scheduling requests
US20080184241A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Techniques for automated balancing of tasks across multiple computers
CN101821716B (zh) * 2007-10-11 2017-07-07 高通股份有限公司 调度下载:实现后台过程以接收广播数据
US8090826B2 (en) * 2008-06-27 2012-01-03 Microsoft Corporation Scheduling data delivery to manage device resources
JP5359295B2 (ja) * 2009-01-16 2013-12-04 富士通株式会社 負荷分散装置、負荷分散方法および負荷分散プログラム
US8239231B2 (en) * 2009-07-27 2012-08-07 Jie Lian Method for optimizing resource allocation
US8782211B1 (en) * 2010-12-21 2014-07-15 Juniper Networks, Inc. Dynamically scheduling tasks to manage system load
WO2013003327A1 (en) * 2011-06-27 2013-01-03 University Of Massachusetts Dynamic advance reservation with delayed allocation
FR2978848B1 (fr) * 2011-08-02 2013-08-30 Viaccess Sa Procede de lissage de la charge de travail d'un serveur
EP2829022A1 (en) * 2012-03-21 2015-01-28 Entropic Communications, Inc. Method and apparatus for implementing traffic flags for large service groups
US9071609B2 (en) * 2012-10-08 2015-06-30 Google Technology Holdings LLC Methods and apparatus for performing dynamic load balancing of processing resources
US20150106805A1 (en) * 2013-10-15 2015-04-16 Cisco Technology, Inc. Accelerated instantiation of cloud resource
WO2015181937A1 (ja) * 2014-05-30 2015-12-03 株式会社日立製作所 仮想サーバのバックアップスケジュール作成方法
WO2016064029A1 (ko) * 2014-10-23 2016-04-28 엘지전자 주식회사 무선 통신 시스템에서 스케줄 정보 변경 방법 및 이를 위한 장치
US9813936B2 (en) * 2015-04-22 2017-11-07 At&T Intellectual Property I, L.P. System and method for scheduling time-shifting traffic in a mobile cellular network
CN104834722B (zh) * 2015-05-12 2018-03-02 网宿科技股份有限公司 基于cdn的内容管理系统
US10042626B2 (en) * 2015-06-29 2018-08-07 Verizon Patent And Licensing Inc. Software updates using client self-reporting and a hierarchical data structure

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020050533A1 (en) * 2018-09-06 2020-03-12 Samsung Electronics Co., Ltd. Electronic device for supporting access to wireless media using target wake time (twt) defined in ieee 802.11 standard
US11206184B2 (en) 2018-09-06 2021-12-21 Samsung Electronics Co., Ltd. Electronic device for supporting access to wireless media using target wake time (TWT) defined in IEEE 802.11 standard
US11818003B2 (en) 2018-09-06 2023-11-14 Samsung Electronics Co., Ltd. Electronic device for supporting access to wireless media using target wake time (TWT) defined in IEEE 802.11 standard
KR20210002069A (ko) * 2019-01-03 2021-01-06 네이버랩스 주식회사 엔드 디바이스, 엔드 디바이스를 제어하기 위한 에지 서버 및 클라우드 서버를 포함하는 3자간 통신 시스템, 및 그의 동작 방법

Also Published As

Publication number Publication date
US20170078160A1 (en) 2017-03-16

Similar Documents

Publication Publication Date Title
KR20170033121A (ko) 서비스 처리 방법 및 이를 구현하는 전자 장치
EP3287895B1 (en) Electronic device for composing graphic data and method thereof
EP3312840A1 (en) Electronic device and method for playing multimedia content by electronic device
US11385935B2 (en) Task scheduling method and electronic device for implementing same
EP3391634B1 (en) Electronic device and method for controlling application and component
US10761498B2 (en) Electronic device and method for operating the same
US10795720B2 (en) Electronic device for controlling application and operation method thereof
EP3389336B1 (en) Electronic device and method for operating same
KR20180013608A (ko) 전자 장치의 전력 소모 감소를 위한 방법 및 장치
EP3410282A1 (en) Electronic device and method for controlling user interface of electronic device
EP3200058A1 (en) Electronic device and method for processing input on view layers
KR20170109401A (ko) 전자 장치 및 그 제어 방법
KR20170019804A (ko) 전자 장치의 위치 정보 확인 방법 및 그 전자 장치
KR20180050174A (ko) 전자 장치 및 그 제어 방법
US10402050B2 (en) Electronic device and method for displaying object in electronic device
US20170109710A1 (en) Method for providing schedule and electronic device supporting the same
KR102255361B1 (ko) 인텐트 처리 방법 및 그 전자 장치
KR20170098120A (ko) 디스플레이 밝기를 조절하는 전자 장치 및 방법
KR20180127831A (ko) 전자 장치 및 그의 정보 공유 방법
KR20180110896A (ko) 전자 장치 및 전자 장치에서 복수의 무선 인터페이스를 이용한 통신 방법
KR20180020745A (ko) 일과 생활에 대한 정보를 제공하기 위한 전자 장치 및 방법
KR20180004956A (ko) 전자 장치 및 전자 장치의 동작 방법
KR20170119948A (ko) 전자 장치 및 그 제어 방법
KR20180092075A (ko) 카드 정보를 처리하기 위한 방법 및 그 전자 장치
US10694044B2 (en) Electronic device and content transmitting and receiving method thereof