매번 사람이 할 수는 없잖아요.
월 배치로 할까요? 데몬이 돌다가...
배치? 뭘 배치한다는 걸까. 데몬은 또 뭐란 말인가? 모르면 당혹스러울 수 있지만, 사실 알고 보면 그렇게 어려운 말은 아니다.
위스키를 좋아하거나 스타트업에 관심이 있다면 배치라는 말을 들어본 적이 있을 것이다. n 번째 배치 등 배치(batch)는 '일괄처리'를 위해 묶여있는 묶음을 말한다. 배치 프로그래밍은 사용자와의 상호작용 없이 작업이 일괄적으로 처리되는 것을 말한다. 특정한 이벤트 기준으로 배치가 돌아갈 수도 있고(이벤트 배치), 특정한 시간을 기준으로 배치가 돌아갈 수도 있으며(정기 배치), 사용자의. 요청이 발생했을 때를 기점으로 수행이 될 수도 있다.(On demand)
고객에게서 송금 거래 요청이 들어왔다. 그러면 해당 고객의 계좌에서는 송금 거래가 일어나고, 수취 고객의 계좌에서는 수취 거래가 발생해야 한다. 이런 이벤트들을 기준으로 발생하는 것이 이벤트 배치이다. 이벤트 배치는 '특정조건'이 충족되어야 배치가 발생하므로 처리 시점은 일정하지 않을 수 있다.
정보계에 쌓이는 수많은 데이터는 망분리로 인해 현업이 볼 수가 없다. 현업이 해당 데이터에 접근해 분석을 수행하기 위해서는 Data Warehouse에 적재가 필요하다. 보통은 일별로 데이터를 쌓아주는데 이것이 바로 정기 배치이다. 꼭 일별일 필요는 당연히 없고, 월배치/주배치/시배치 등도 있다.
마지막으로 사용자의 요청이 있을 때 생기는 배치도 있다. 예를 들어 사용자가 자신의 계좌 내역을 보고 싶다고 할 경우, DB에서 해당 내역을 조회하고 화면에 노출할 데이터를 생성하는 작업이 필요하다. 이를 온디맨드 배치라 하며, 사용자의 요청이 있으면 '즉시' 처리되고 그 결과가 전달된다.
데몬은 시스템 백그라운드에서 돌아가는 서버 프로세스를 말한다. 서버가 부팅될 때 메모리에 할당 되고, 서버가 죽을 때 까지 자원을 활동받아 점유하고 있다. 보통 시스템의 서비스를 제공하거나,백그라운드에서 주기적인 작업을 수행한다. 데몬 중에서는 메일/웹/데이터 서버처럼 혼자서 들어온 요청을 처리하는 standalone 데몬과, 클라이언트에서 요청이 들어왔을 때만 처리하는 super deamon이 있다. 데몬은 보통 UNIX 계열 운영체제에서 활용된다.
배치와 데몬은 개념적으로는 큰 관계는 없다. 하지만 상호보완적인 형태로 활용할 수 있기에 함께 다뤄보았다. 예를 들자면 Push서비스가 있다. 현업은 CMS를 통해 다양한 조건을 걸어 고객군을 만든다. '실행'을 클릭하는 순간 cms는 해당 고객 리스트를 말아 Push 서버로 전달한다. Push서버에서는 슈퍼 데몬이 돌고 있다. 이 데몬은 Push발송 요청이 왔음을 감지하고 프로세스를 실행시켜 발송 작업을 지원한다.