프로젝트/42프로젝트

토이 프로젝트 확장(42JOBS, 이제는 카톡으로도!)

susong 2023. 7. 24. 19:49
728x90

들어가면서

슬렉으로 완전하게 만들기를 하루, 간단한 사이드 프로젝트였지만 에러를 유발할 수 있는 부분(네트워크)과 엣지 케이스들(용량 이슈 혹은 사진 크기 등등)에 대한 처리 로직도 포함하다 보니까 생각보다 시간이 길어졌다. 42 서울에서 가장 중요하게 여기는 것이 완전하게 돌아가는 프로그램을 만드는 것이다보니까, 이런 부분은 몸에 배는 것 같다. 아주 습관이라 하기 싫어도 알아서 하게 된다(특히, C언어에서 malloc이 안되었을 경우 등에 대한 처리 등등...)

 

만들고 보니, 이렇게 애정을 쏟은 프로젝트를 그냥 42슬렉에서만 쓰게 하기에는 너무 아쉬웠다. 그래서 이것을 카톡으로도 확장하면 좋겠다고 생각했고, 오늘 점심 먹다가 이 생각을 하게 되어서 저녁까지 마무리했다. 이 프로젝트를 하면서 몇 가지를 더 배워봤는데 그 부분을 중심으로 프로젝트를 회고해보려고 한다.


어떻게 구성할 것인가?

카카오톡 봇은 만들기가 생각보다 까다롭다. 왜 그렇냐면, 카카오톡에서 제공해주는 공식 카카오톡 봇 SDK는 상당히 제한적인 기능만을 수행할 수 있기 때문인데, 이 봇 SDK는 기능은 많지만 쓸모 있는 기능은 많지 않다. 특히, 무료로 쓸 수 있는 기능은 제한적이고 또 사용자에게 알람을 띄우는 기능은 법적인 문제로 시간, 비용적 제한이 있다. 이런 공식 툴을 사용해서 카톡으로 알람을 주는 것은 상당히 노력과 비용을 소모할 것이라고 판단했고, 나는 이전에 해본 방식을 사용하기로 했다.

 

내가 사용한 방식은 매우 간단하다. 원래는 리눅스에 안드로이드를 에뮬레이팅해서 거기서 나오는 이벤트 리스너를 바탕으로 실행하려 했었는데, 잘 찾아보니까 그런 기능을 어플로 누가 구현해 놓아서 그냥 그것을 쓰기로 했다. 내가 선택한 것은 메신저봇 R이고, 이 녀석은 공기계에서 JavaScript를 이용해서 봇을 만들 수 있게 제공해준다. 간단하게 카톡 알람이 뜨면, 그 알람에 대한 답장을 설계할 수 있는 프로그램인데, 내게는 이것만으로 충분했기 때문에 바로 제작에 돌입했다.


카카오톡 봇 구성

간단하게 설명하면 이런식이다.

이 과정에서 새롭게 배운 것은 Python FAST API인데, 이게 정말정말 놀라울 정도로 간단하다. 향후 프로젝트에서도 사용할 수 있을 것 같을 정도로 간단함에 매료되었고, 놀라울 정도로 성능도 준수하다. 혹시 API 그냥 급하게 만들어야 할 때는 이걸로 만들 것 같다. 약 9줄만으로 필요한 GET 요청에 대한 응답을 해낼 수 있다는 것이 놀라웠고, FAST API에서 제공하는 커스터마이징도 놀라울 정도로 다양했다. 꼭 한번 추천한다.

파일은 DB연결까지 진행할까 하다가, 그냥 빠르게 만들기 위해서 가장 최신을 유지하는 파일 2개를 만들고(root_path은 웰컴 html이다) 해당 파일의 내용들을 Response로 보내도록 제작하였다. 이렇게 간단한 방식으로 나는 두 회사의 가장 최신 공고를 언제나 응답해주는 API 2개를 만들어넀다.

간단한 폰 로직 구현

그렇게 잘 만들어진 API를 이제는 폰에서 간단한 로직을 통해서 사용한다. 물론 안에 Response 객체 등등 여러 가지 알아야 될 것들이 있지만, 머리 아프니까 그런 것 말고 크게 크게만 설명해 보겠다. 공기계 안에 있는 챗봇은 위의 다이어그램처럼 간단하게 제작되어 있다. JavaScript의 Thread를 사용해서 시간 인터벌(1분)을 구현했고, 이를 바탕으로 지속적으로 내 서버에 접속, 데이터를 가져오게 된다. 가져온 데이터는 공기계 내부에 있는 DB에 저장되며, 마지막에 가져온 값과 이번에 새롭게 가져온 값이 다를 때에만 오픈 채팅방에 올리는 방식이다.


새로운 것은 늘 즐겁다

C랑 C++을 깊이 있게 이해하고, CS 및 웹에 대해 이해하고 있으니 새로운 것을 배우는 것은 매우 쉽다. RFC와 POSIX로 다져져있다 보니까, 요즘은 기술문서를 읽어도 즐겁다. 특히, 최근에는 쿠버네티스를 공부하고 있는데, RFC 읽다가 읽어서 그런지 몰라도 정말 너무 친절하고 문서 작성자분들께 감사하다. 사실상 이번에 새롭게 배운 것은 사실상 Fast API 밖에 없는데, 이 Fast API를 배울 때에는 잘 만들어진 다큐멘트 덕분에 빠르게 구현할 수 있었다.

 

다 만들고 보니까, 거의 스피드런을 한 것 같다. 서버 설정, API 2개, 챗봇 로직, DB설정까지 3~4시간 만에 마친 것 같다. 그렇게 만들어진 카톡방에는 현재 30명 정도가 들어와 있는데, 첫 베타테스터 입장임을 고려하면 많은 사람들이 이용하고 있다고 생각한다. 언젠가 이 카톡방이 커져서 많은 사람들에게 도움이 되는 툴이 되었으면 한다.


신입개발자 수도권 공고 모음방

요즘 채용 솔루션 회사들에 돈이 몰리고 있는 것 같다. 내가 취준을 하다 보니까 실제로 많은 회사들이 상시채용으로 채용을 진행하고 있었고, 이 과정에 많은 인력들이 갈려나가고 있는 것을 직접 보았다. 그렇기 때문에 채용솔루션들 특히 상시채용과 관련된 필요가 증대하고 있는 것 다. 이런 과정에서 두들린 같은 회사에서 만든 채용자들을 위한 솔루션들이 시장에 많이 소개되었고 받아들여졌다.

 

하지만 피고용인을 위한 플랫폼은 아직 미약한 것 같다. 피고용인들은 다양한 플랫폼(잡플래닛, 사람인, 원티드 등등)에 들어가서 날짜를 확인하고, 각각의 구직 사이트마다 이력서를 등록하고, 연락 왔는지 확인하기 위해서 모든 플랫폼을 다 돌아야 된다. 나의 이번 프로젝트는 그런 부분에서의 문제를 해결하기 위해서 제작되었다. 이번에 제작한 내 카카오톡 봇이 나 같은 신입 개발자들(특히, 수도권, 1~3년 차, 개발직군을 희망하는 개발자)에게 조금 더 채용에서 힘을 빼는데 도움이 되었으면 좋겠다.

 

카카오톡 입장 링크(비번: 4242)

https://open.kakao.com/o/gm6D4Lwf

728x90