쉬운·기술사전비유로 이해하는 AI·개발 용어
배포와 운영

워커

Worker

요청이 들어올 때마다 한 가지 일만 처리하는 작은 프로그램이에요.

워커 개념 다이어그램

누군가 40MB짜리 사진을 사이트에 올렸어요. 앱이 그 자리에서 모든 걸 멈추고 이미지 크기를 조정하기 시작하면, 다음 열 명의 사용자는 뱅글뱅글 도는 로딩 화면만 바라봐야 해요. 그래서 기다리게 하지 않아요. job을 넘겨버리고 "이거 처리해, 나는 고객 응대 중이야"라고 합니다.

그 벽 너머에서 일을 받아 처리하는 게 바로 워커예요.

바쁜 주방의 라인 쿡을 떠올려보세요. 주문을 받거나 와인을 따르거나 계산대를 운영하지 않아요. 레일에서 주문서 하나를 집어 들고, 요리 하나를 만들고, 내보내고, 다음 주문서를 집어요. 그게 전부예요. 워커는 소프트웨어의 그 라인 쿡이에요. 한 가지 일만 하는 작은 프로그램이 손님이 앉아 있는 홀이 아닌 주방 안쪽에서 조용히 돌아갑니다.

핵심을 짚어보면 이렇습니다. 앱이 하는 일 대부분은 눈앞에서 빠르게 일어나요. 버튼 클릭, 결과 확인. 하지만 어떤 작업은 너무 느리거나 무겁거나 귀찮아서 사람을 그 앞에 붙잡아 두기가 어렵죠. 그래서 앱은 그런 작업들을 워커에게 넘기고, 사용자는 하던 일을 계속합니다. 넘겨지는 작업의 종류는 거의 항상 비슷해요.

이것들은 누가 지켜볼 필요가 없어요. 그래서 눈에 띄지 않는 곳에서 처리되고, 사용자는 바로 화면을 돌려받아요.

이제 핵심 묘수가 나옵니다. 워커가 존재하는 진짜 이유예요. 저녁 손님이 몰릴 때 좋은 주방은 메뉴를 다시 짜거나 셰프를 재교육하지 않아요. 라인에 쿡을 더 세울 뿐이에요. 주문서 5장이 밀렸다면 쿡 5명을 붙여요. 소프트웨어도 정확히 같은 방식으로 작동합니다. 일이 쏟아질 때 새로 짤 것이 없어요. 같은 워커의 복사본을 더 많이 나란히 실행하고, 각각이 같은 레일에서 주문서를 집어 가요.

코드를 한 줄도 안 건드려도 이것이 중요한 이유가 있어요.

  1. 앱이 느린 작업을 처리하면서도 빠르게 느껴지는 이유예요. 무거운 처리는 백단의 워커에게 넘어갔기 때문에 앞단이 멈추는 일이 없어요.

  2. 바쁜 날 규모를 키우는 방식이에요. 가입자나 업로드가 폭주해도 앱이 다운되지 않아요. 쿡을 더 세우면 그만이에요.

  3. 반복적인 자동화 작업이 저절로 돌아가는 원리예요. "설정해두면 알아서 된다"는 자동화의 상당수는 사실 사용자가 자는 동안 조용히 주문서를 집어가는 워커랍니다.

워커는 보통 차례를 기다리는 작업 줄에서 일을 공급받아요. 그 줄에는 따로 이름이 있는데, 예요. 워커는 줄 맨 앞에서 하나를 꺼내 처리하고, 다음 것을 꺼내요. 줄이 길어지면 쿡을 더 세우고, 조용해지면 쿡들이 잠시 쉬어요. 괜찮아요. 그러라고 있는 거니까요.

오해하지 말아야 할 부분이 하나 있어요. 워커는 영원히 대기하며 돌아가는 프로그램이 아니에요. 핵심은 깨어나서, 맡은 일 하나를 처리하고, 결과를 보고하고, 빠져나가는 거예요. 가볍고, 집중적이고, 일회성이에요. 한 번에 백 개가 필요하면 백 개를 띄우면 되고, 필요 없으면 하나도 안 띄우면 돼요.

모든 것을 하는 기계를 만드는 게 아니에요. 한 가지를 잘하는 작은 쿡 하나를 만들고, 물량이 요구하는 만큼 그 쿡을 고용하는 거예요.