ISAPI 필터란 (Internet Server Application Program Interface)?

인터넷 서버 응용 프로그래밍 인터페이스

ISAPI 필터는 인터넷 정보 서버의 앞단에 위치하면서 인터넷 정보 서버로 들어온 모든 request 에 대해 가장 먼저 처리할 권한과, 인터넷 정보가 생성한 response를 클라이언트에 보내주기전에 가공할 수 있는 권한을 갖는다.

ISAPI 필터를 작성할 대 잊지 말아야 할 것은 가능한 최소한의 작업을 이곳에서 처리해야 한다는 사실이다. 웹 사이트에 대한(가상 디렉토리가 아닌 웹 사이트 전체이다) 모든 request가 ISAPI 필터를 거칠 수 있기 때문에 과도한 작업을 필터에 걸어주게 되면 웹 사이트 전체의 퍼포먼스에 심각한 영향을 미치게 된다.

   

ISAPI는 CGI 보다 더 빠르게 실행되는 웹서버 프로그램을 작성할 수 있도록 해주는 일련의 윈도우 프로그램 호출이다. CGI 프로그램의 단점은 매번 실행될 때마다 그것의 고유의 주소공간과 함께 별개의 프로세스로 실행된다는 것인데, 특히 많은 사용자들을 위해 수많은 인스턴스들이 실행되는 경우 가외의 명령어들이 실행되는 결과를 낳는다. 이제 사용자들은 ISAPI를 사용하여 HTTP 프로그램의 프로세스와 주소공간의 일부로서 동작할 수 있는 DLL 프로그램 파일을 만들 수 있다. DLL 파일들은 HTTP 시작되면 컴퓨터 내에 적재되며, 필요한 동안 계속 남아있게 되므로, CGI 프로그램처럼 자주 찾아 메모리 내로 읽어들일 필요가 없게 된다.

기존의 CGI 프로그램들은 로직을 재작성하지 않고도 ISAPI를 이용한 DLL로 변환될 수 있다. 그러나, 스레드를 지원함으로써 한개의 DLL 인스턴스가 여러명의 사용자들을 지원할 수 있도록 재작성 될 필요는 있다.

ISAPI DLL 의 특별한 종류를 ISAPI 필터라고 부르는데, 이것은 모든 HTTP 요청을 위해 제어권을 받도록 지정될 수 있다. 이외에도 사용자는 암호화/복호화, 기록유지관리, 요구심사 또는 기타 다른 여러가지 목적을 위한 ISAPI 필터를 제작 할 수 있다.

   

ISAPI 필터의 동작 원리

   

ISAPI 필터는 웹 서비스가 시작될 때 인터넷 정보 서버와 같은 프로세스 공간에 로딩되는데, 이 때 ISAPI 필터는 자신이 처리할 이벤트 정보를 인터넷 정보 서버에 알려준다. 클라이언트로부터 request 가 들어오고 response를 전송할 때 인터넷 정보 서비스는 ISAPI 필터가 등록한 이벤트 정보를 사용해 각각의 필터에 특정 이벤트가 발생하였음을 알려주고, ISAPI 필터는 이벤트 핸들러에서 원하는 처리를 한다.

   

1. 웹 서비스가 시작 될 때 ISAPI 필터는 자신이 처리할 이벤트를 인터넷 정보 서버에게 알린다.

2. 클라이언트로부터 request 가 들어왔을 때 인터넷 정보 서버는 request 와 관련된 이벤트를 알려줄 ISAPI 필터가 있는지 확인하고 ,그러한 필터가 존재한다면 request 에 대한 정보를 ISAPI 필터에게 전달한다.

3. ISAPI 필터는 이벤트 핸들러에서 request 에 대한 작업을 수행하고 제어권을 다시 인터넷 정보 서버로 넘긴다.

4. 인터넷 정보 서버는 response를 생성한 후 response와 관련된 이벤트를 알려줄 ISAPI 필터가 존재하는지 확인하고, 그러한 필터가 있으면 response 에 대한 정보를 ISAPI 필터에게 전달한다.

5. ISAPI 필터는 이벤트 핸들러에서 response 에 대한 작업을 수행하고 response 를 클라이언트에게 전달한다.

   

이러한 과정을 수행하면서 인터넷 정보서버와 ISAPI 필터는 HFC(HTTP_FILTER_CONTEXT)라는 구조체를 사용해 상호간에 정보를 교환한다.

   

인터넷 서버 응용프로그램 인터페이스

즉, OWA, EAS, RPC over HTTP, ASP.NET ISAPI 등의 것을 모두 아우른다

모두 사용자에게 다양한 HTTP기반 프로토콜을 통해 Exchange 서버로의 액세스를 제공한다.

즉, 가상사설망(VPN)없이도 일반 HTTP를 통해 연결이 가능하도록 해준다.

RPC over HTTP는 VPN없이도 Exchange서버의 자신의 사서함에 ㅈ접근하도록 해준다.




   


추가. GPU관련

CPU는 단순 수치 연산뿐만 아니라 컴퓨터 전체에서 사용되는 다양한 명령을 순차적으로 주고받으며 처리한다.

그러나 단순 연산 만큼은 3D 그래픽 구현을 위해 연속적이고 빠른 수치 연산에만 최적화되고 발전을 거듭해온 GPU가 훨씬 빠르다.


이렇게 발달한 GPU의 연산 성능을 그대로 두기는 아까워서 CPU를 보조하는 용도로 사용한 것이 ‘GPGPU’ 기술이다. 

GPGPU 기술은 CPU만 가지고서는 몇 시간 걸리는 작업도 불과 몇십분 이내로 끝낼 수 있도록 도와줌으로써 업무 처리 시간을 크게 줄이고 있다. 즉, 알파고에도 방대한 데이터를 바탕으로 한 단순연산 작업은 GPU에게 할당한 것 이다.

알파고와 같은 인공지능은 물론 기후 예측, 통계 예측, 각종 시뮬레이션, 이미징 데이터의 인코딩/디코딩 등 이루 셀 수 없는 영역에 GPGPU 기술이 사용되고 있다.

   


2016년 3월 11일 이세돌 9단(ELO 세계 4위) 알파고 5전 중에 2전 2패

2016년 3월 12일 이세돌 3패


   

   

인공지능 바둑 프로그램 알파고는 총 1202개 중앙처리장치(CPU), 176개 그래픽처리장치(GPU)가 탑재된 시스템으로 구현된다. CPU 개당 1초에 1000회 이상 시뮬레이션한다. 서버는 여러 대가 하나의 네트워크로 연결돼 분산 처리하는 클러스터 방식이다. 인텔, 엔비디아 등에 핵심 부품은 공급받지만 최종 구현을 위한 설계는 직접 한다. 이렇게 완성된 시스템은 대기업, 연구소에서 데이터 분석이나 특정 분야 시뮬레이션을 위해 구축한 소규모 슈퍼컴퓨터와 맞먹는다. 

   

알파고에 슈퍼컴퓨터급 인프라가 투입된 이유는 학습시간을 단축하기 위해서다. 알파고는 입력된 기보 16만건을 토대로 지난 5개월간 매일 3만번의 실전 경험을 쌓았다. 

   

딥마인드가 네이처에 게재한 논문에 따르면 초기 알파고는 48개 CPU를 탑재한 서버로 구현됐다. 방대한 양의 기보를 학습하고 다른 인공지능 바둑 프로그램과 500번 이상 겨뤘다. 인간과 대결을 준비하면서 컴퓨팅 파워를 더 늘렸다. 초기 모델보다 40배가 넘는 1900개 CPU를 탑재한 고성능 시스템을 장착해 테스트하기도 했다. 

   

지난해 10월 판후이 2단과의 대결에 모습을 드러낸 알파고는 1202개 노드로 운영됐다. 데미스 하사비스 딥마인드 CEO는 무리한 컴퓨팅 파워 확장보다는 알고리즘 개선에 초점을 맞췄다고 설명했다. 이를 통해 초당 10만개에 달하는 수를 고려한다. 최고 바둑기사보다 최대 1000배 빠르다.

   

   

   

   

이세돌이 알파고에 2연패를 당한 가운데, 구글이 알파고에게 대국 종반 이미 승리 확신 메시지를 받은 것으로 알려졌다. 

알파고는 이세돌과의 대국 종반에 들어서면서 이미 승리를 확신했고, 이를 구글에게 보고

구글 알파고 논문을 게재한 네이처지의 취재팀에 따르면 이미 알파고로부터 판세 분석 보고를 받은 구글이 자신들의 승리를 확신한 것으로 밝혀졌다. 

구글은 지난 9일 벌어진 첫 대국에서도 종료 30분 전에 알파고의 승리를 확신했던 것으로 전해졌다

   

   

   

<네이처>에 따르면 알파고는 유럽 바둑 챔피언 판후이 2단을 상대로 공식 경기에서 5-0으로 승리한 전적이 있음

   

유럽 바둑 챔피언 판후이 2단(유럽바둑연맹 엘로(ELO) 세계순위는 2월7일 현재 631위) 이김

이세돌 9단(ELO 세계 4위) 3/11 현재 알파고가 5전 중에 2전 2승




'인문사회' 카테고리의 다른 글

기원전 BC, 기원후 AD  (0) 2023.03.30
제1차 세계대전, 대공황  (0) 2022.03.24
이세돌 알파고 경기 이후 첫 인간과의 경기  (0) 2016.03.15
진정한 자유시간이란?  (0) 2016.02.19

+ Recent posts