1. 낡은 코드를 뜯어고쳐봅시다.

phw3071·2022년 8월 2일
12
post-thumbnail

타입스크립트 쓴지 얼마나 됬다고 자바스크립트가 너무 흉악해보이네요... 으 끔직해... 🤮

어떤 코드인가요?

안녕하세요! Opize Calendar2notion의 개발자 혀느현스입니다. 이번에 뜯어고칠 코드는 Calendar2notion의 동기화봇입니다.

동기화봇은 구글 캘린더와 노션을 동기화하는 서비스인 Calendar2notion에서 동기화를 진행해주는 핵심 프로그램의 이름입니다. 서비스 그 자체라는 중요도에 비해 아직도 자바스크립트로 작성되어 있을 정도로 굉장히 구식입니다.

사실 이 프로그램은 제 프로그래밍 실력이 아직 낮았을 때 개발된지라 부족한 점이 많습니다. 정말 땜빵으로 처리된 부분도 많고, 오류도 많고... 그래도 계속 뜯어고치면서 코드 재작성만 3번을 했었어요. 그럼에도 아직 부족한 점이 허다하고. 계속 오류가 발생하다보니 다시 처음부터 작성하기로 했습니다.

물론 그때는 고2였고, 지금은 고3입니다. 아직도 실력은 부족합니다...

개선할 점 분석하기

먼저 기존 프로그램에서 부족하거나 개선해야 할 점을 분석해봤습니다.

1. 예외 처리


악마의 알 수 없는 문제

Notion과 Google Calendar의 API를 장난아니게 많이 사용하다보니깐 미리 파악하지 못한 문제가 너무 많이 발생합니다. calendar2notion 문의 중 거의 대부분이 이런 알 수 없는 문제 에 관한 것들이었어요.

어찌할 방법이 없다보니깐 그냥 IF문으로 처리했었는데, 진짜 이건 아니다 싶더라고요. 코드를 새로 작성하면서 오류 처리 부분을 가장 중요하게 생각해야 될 것 같습니다

다양한 오류들을 빠르게 처리할 수 있도록 대처방안을 마련해야 될 것 같습니다.

2. 먹통

업데이트 등을 위해 종료 요청을 보내면 항상 종료되지 않는 쓰레드가 있습니다. 이상하게 몇몇 쓰레드가 작업을 종료하지 못하고 막혀있더라고요. 이번에는 이러한 문제를 해결하고 만약 발생한 경우 알림을 보내려고 합니다.

3. 테스트 코드

기존 코드의 경우 테스트 리스트는 있었지만, 거의 대부분 수동으로 진행해야 됬습니다. 귀찮더라고요. 이미 있는 코드를 다시 작성하는 것 인만큼 TDD(테스트 주도 개발) 까지는 아니더라도 배포 전 제대로 동작하는 지를 확인하기 위해 테스트 과정을 거칠려고 합니다.

4. 에러 모니터링

동기화봇의 로깅 자체는 큰 문제는 없었습니다. 로그 파일로도 남기고 있고, 중요한 로그 같은 경우 디스코드에 올리는 등 문제는 없었습니다.

쓰레드 상태실시간 작업오류 알림

다만 오류 발생 내용을 별도로 기록하지 않고, 로그 파일과 디스코드에만 올리고 있는지라 오류 발생시 파악이 조금 불편했습니다. 가장 편하게 확인할 수 있는 방법이 디스코드인데, 디스코드는 검색이 조금 불편하다는 문제가 있습니다.

마침 제 개인용 대시코드 웹 사이트가 완성된지라 여기에 알림 시스템을 연결해볼려고 합니다.

개인 데시보드 관련 이야기는 이후에 다른 글에서 다루겠습니다.

5. 레거시 API

Calendar2notion의 동기화봇은 노션 API가 베타시절 때부터 개발해왔습니다. 따라서 당시에 없던 기능을 사용하느라 땜빵했던 것들도 있고 여러모로 부족한 부분이 많습니다. 이런 낡은 부분을 드러내고 따끈따끈🔥한 새로운 기능들을 추가할 예정입니다.

6. 타입스크립트

코드를 작성할 당시에 저는 타입스크립트를 사용할 줄 몰랐습니다. 이름만 들어봤지 그게 뭔지도 몰랐어요. 지금은 주 언어가 타입스크립트가 되었고, 오히려 자바스크립트를 보면 불안해지는 타입스크립트 의존증을 겪고 있습니다🤣. 확실히 타입스크립트가 오류를 미리 막아주다보니깐 굉장히 편리합니다.

7. 원격 제어

동기화봇은 자체적으로 웹 서버를 가지고 있습니다. 서버 상태도 확인하고 종료 요청을 보내기 위함이기도 합니다. 이걸 조금 더 강화해볼려고 합니다. (로그 전송 등등)

혹시 소스를 공개하실 건가요?

이 부분은 굉장히 고민이 많습니다. 아직 너무 부족한 부분이 많거든요.

돈 때문에 공개하지 않는거다! 이런 건 아닙니다. 어짜피 올해나 내년 중으로 공식 캘린더 동기화 기능이 나온다고 했거든요. 이미 내년 5월까지만 구독을 받겠다고 선언까지 했습니다.

아마도 이번 동기화봇v4의 코드가 완성된다면 내년 5월이 아니더라도 오픈 소스로 공개할 것 같습니다. 노션 공식 캘린더도 아마 부족한 기능이 있을 것이고, 이러한 부분은 오픈소스로 채워나갈 수 있을 테니까요.

물론 아니실테지만 제 수익은 걱정하실 필요 없습니다. 전 아직 고등학생이고, 부모님의 도움을 받고 있으며, 유지할 자금은 지금까지 충분히 벌었습니다!

profile
새로운 상상을 하고, 상상을 현실로 만드는 고3 개발자

2개의 댓글

comment-user-thumbnail
2022년 8월 2일

오픈소스로 만들어요
입벌려 PR 들어간다

1개의 답글