본문으로 건너뛰기
JSL107's Tech Note

소개

백엔드 개발자입니다.

불편한 걸 보면 그냥 못 넘어갑니다. 누가 매달 같은 걸 손으로 확인하고 있다면 그것도 불편이고, 실패한 이유를 알아내려고 기록을 하나하나 뒤져야 한다면 그것도 불편이죠. 대개 아무도 불편하다고 말하지 않습니다. 그냥 원래 그런 줄 알고 씁니다.

만든 것

이대리 — Slack에서 부르면 대답하는 업무 자동화 봇입니다. 기획하는 쪽·개발하는 쪽·검토하는 쪽으로 역할이 나뉘어 있어서, 코드를 검토해주기도 하고 오늘 뭘 했는지 정리해주기도 하고, 간단한 건 직접 짜기도 합니다. 다들 자리에 앉아 일하다 점심시간엔 자리를 비우는 사무실 화면도 붙어 있어요.

제 일을 대신 시키려고 만들었는데, 만들다 보니 회사에서 겪던 문제가 그대로 나오더라고요.

결국 서버 만들 때 하던 고민 그대로였습니다. 규모만 작았을 뿐이에요.

이 블로그 — Astro로 만들어 GitHub Pages에 올립니다. 4년 방치해뒀다가 올해 다시 손봤어요.

고친 것들

왜 깨졌는지 아무도 모르던 일. 전국 학교 게시판 수백 곳에서 글을 자동으로 가져오는데, 가끔 몇 군데가 실패합니다. 문제는 실패한 것 자체가 아니었어요. 이유를 알려면 기록을 하나하나 뒤지는 수밖에 없다는 게 불편이었죠. 실패를 학교별·이유별로 모아 보여주는 화면을 만들었더니 답이 바로 나왔습니다. “우리 코드는 멀쩡한데 상대 쪽에서 우리 서버 주소를 막아뒀다.”

하나 넘어졌다고 전부 다시 하던 일. 학교 한 곳에서 오류가 나면 그 회차 전체가 무효가 됐습니다. 멀쩡히 가져온 것까지 같이 버려졌어요. 실패한 것만 따로 세고 성공한 건 지키도록 고쳤습니다.

인증서라는 것도 있습니다. 1년에 한 번 갱신하는데 놓치면 서비스 전체가 멈춰요. 그런데 1년에 한 번이라 아무도 기억을 못 합니다. 사람 기억에 서비스를 맡겨둔 셈이죠. 만료일을 매일 확인해서 미리 알려주도록 해뒀습니다.

일한 곳

상담 시스템에서 시작해 매장 결제를 거쳐, 지금은 학교와 학부모가 함께 쓰는 서비스를 맡고 있습니다.

세 곳 다 공교롭게도 틀리면 바로 티가 나는 쪽이었어요. 통화가 안 붙거나, 결제가 막히거나, 알림이 안 가거나. 이런 곳에서는 작은 불편이 그대로 사고가 됩니다. “이 정도면 되겠지” 하고 넘긴 자리에서 꼭 한 번은 터지거든요. 그러다 보니 불편한 자리를 먼저 찾는 버릇이 생겼습니다.

지금 있는 곳은 월 90만 명이 쓰고, 서버는 NestJS와 TypeScript입니다. 낡은 서버와 새 서버를 같이 굴리는 중이라 “이건 어느 쪽에서 고쳐야 하나”를 정하는 시간이 코드 짜는 시간보다 길기도 합니다.

어떻게 일하나

급할 때 눈에 보이는 곳만 막아두면, 같은 걸 쓰던 다른 화면이 조용히 깨진 채로 남더라고요. 그걸 몇 번 겪고 나서는 원인이 나올 때까지 파는 편이 결국 빠르다는 걸 알게 됐습니다.

제일 자주 만나는 건 숫자가 안 맞는 문제예요. 화면에는 “12건”이라고 떠 있는데 막상 열어보면 10건인 식이죠. 조건 하나를 바꿨을 뿐인데 세는 자리가 세 군데라 서로 다르게 세고 있었습니다.

여기엔 뭘 적나

만들다 부딪힌 문제와 그걸 어떻게 풀었는지 적습니다. 요즘은 이대리를 만들며 나온 것들이 대부분이에요.

잘 풀린 것보다 한참 헤매다 알아낸 게 더 많아서, 틀렸던 과정도 지우지 않고 남깁니다. 나중에 같은 자리에서 헤맬 사람이 있을 테니까요.

회사 이름이나 서비스 이름은 쓰지 않습니다. 문제와 해결만 있으면 충분하더라고요.

지난 글

2022년에 쓴 글 32편이 지난 글에 있습니다. 강의 필기, 알고리즘 풀이, 스프링 입문 노트 같은 것들이에요.

지금 보면 부끄러운 것도 있지만, 그때 뭘 몰랐는지가 남아 있는 편이 좋아서 지우지 않았습니다.

연락