매년 초가 되면 항상 회고를 작성해야겠다 생각하지만, 시간이 지나가면서 점점 다음으로 미루게 되는 경향이 있네요.

1분기는 끝나가지만 남은 3분기를 그래도 이전에 무엇을 했고, 올해는 어떻게 할지 적어보려 합니다.

💼 사내 업무

작년에는 사내 프로젝트로 Node.js로 Backend 서버 구현과 C/C++이 로봇 프로그램 기능 추가 및 유지 보수를 진행했었습니다.

Node.js를 이용한 backend는 처음 구현해 봤지만, 생각보다다 구현이 쉬웠고, 성능도 괜찮은 것 같다고 생각합니다.

중간에 코드가 적응된 뒤에 JavaScript의 코드를 TypeScript로 바꾼 점도 이후 유지보수에 더 좋았던 것 같아요.

한 가지 아쉬운 점이라면 그 당시에는 기간(6개월)이 짧았기 때문에 프레임워크로 Express를 선택했지만, 프로젝트가 시간이 지나면서 유지 관리를 하고, 조금씩 코드 스타일도 적응이 돼가면서 NestJS로 시작해 보는 것도 괜찮았을 거라는 생각도 듭니다.

프로젝트를 하면서 TypeScript와 TypeORM을 이용하여 Spring JPA 같이 프로젝트를 해보니 생각보다 괜찮았으며, Type을 잘 정의하면 코드 관리도 쉽게 잘 됐던 것 같아요.

Node.js는 싱글 쓰레드 논 블로킹으로 동작합니다. I/O 처리의 경우는 Event Loop를 이용해 비동기로 처리하면서 Event Loop를 하는 부분이 있었는데 생각보다 성능이 잘 나와서 신기했던 경험이 있었습니다.

NodeJS Event Loop파헤치기라는 글이 Event Loop에 대해 잘 설명한 내용인 것 같아요.

위의 개념이 들어 있던 기능 중 하나는 웹에서 특정 파일을 업로드 하면 적게는 100mb 많게는 4gb가 넘는 파일을 업로드 또는 이어올리기 하는 기능입니다.

이후 backend에서는 해당 파일을 압축해제 후 기존 프로토콜 문서에 맞게 암호화 작업을 하고, 파일과 동일한 부분은 제거하는 diff 처리를 하는 작업 후 AWS S3에 업로드 하는 기능이 있었습니다. 위 로직에서 워커 쓰레드도 이용하고 diff 처리를 위해 c++ 코드도 들어가는데 이러한 작업은 모두 비동기로 동작해야 하는 점입니다.

짧게는 1분도 안 걸리지만 용량이 크면 10분 이상 걸리는 작업도 Event Loop를 통해 안정적으로 처리되면서 기존의 api도 문제 없이 동작한다는게 꽤 신기했던 것 같습니다.

처음엔 Node.js로 Backend를 처리할 때 프로그램이 너무 잘 죽고 조금만 문제가 있어도 서버가 꺼지는 현상이 있었지만, 로그도 추가하고, 예외 처리, API 템플릿 구성, PM2, CI/CD 등 조금씩 기능을 추가하다보니 나름 안정적으로 관리가 됐던 것 같아요.

지금은 다시 Spring Backend 서버 프로젝트를 하고 있으며, 조만간 다시 입사 초에 했던 WPF를 하게 될 것 같습니다. WPF가 그 당시에는 정말 자료도 많이 없고, 찰스페졸드의 WPF 책이 거의 교과서였던 시절이었는데.. 지금 근황은 어떨지 찾아봐야겠네요 ㅎㅎ..

📧 우테캠 Pro 5기 참여

벌써 재작년(2022년) 이야기지만 나름 의미 있고 열정적으로 참여한 활동으로 생각한 우테캠 Pro 5기 참여입니다.

image

실무 3년 차 이상 개발자 중에 사전 과제 테스트를 통과한 60여 명? 정도가 2달 동안 8개의 과제를 하는 과정이에요.

운 좋게 참여할 기회를 받고 사전 과제도 다행히 합격하여 국비 지원 이후 처음? 참여한 외부 활동입니다.

우테캠 Pro 과제의 진행 방식은 모두 Github을 통해 지정된 코드 리뷰어가 평가하는 방식이었습니다.

약 2달간 평일에는 회사 업무를 하고 평일 저녁과 새벽 그리고 주말에 과제를 진행하면서 코드 리뷰도 받아보고, 좋은 코드를 작성하기 위해 리뷰어분과 Github 코멘트로 이야기하는 게 신기하고 재밌었습니다.

또 한 가지 위 활동에 열심히 참여한 이유 중 하나는 교육비 환급도 있었습니다. 과제를 진행하며 코드 리뷰어 분들의 전체적인 평가로 상위 50퍼센트 이내에 들게 되면 교육비의 30퍼센트를 환급해 주는 것도 큰 몫을 차지한 것 같아요. 다행히 50퍼센트 이내에 들어서 돈 벌었다고 생각했었네요.

해당 교육 과정은 코로나 시기에 진행돼서 그런지 교육 과정이 끝나기 전에 딱 한 번 오프라인 모임을 했습니다.
회사 밖에서 다른 개발자분들과 만나서 대화를 하는게 흔한 상황은 아니라 꽤 신기했던 경험이었습니다. 이야기를 나누다 보니 다들 똑같은 사람이구나라는 생각도 들고 사람 사는 거 다 비슷하구나.. 그런 생각도 들고, 그렇게 지나간 것 같아요.

이상한 점은 매년 부트캠프를 모집하는 줄 알았는데 우테캠 Pro 5기 이후 아직까지는 모집을 안 하는 것 같아요.

아래는 위 교육과정의 주차 유형별 주제 및 제가 작업했던 코드 링크를 추가했습니다.

코드는 과제마다 step을 두고 branch로 관리하면서 점점 진행하는 방식으로 진행했었는데 정말 괜찮은 방법이라 생각되네요.

시간이 꽤 지나서 복습도 할 겸 다시 Github 코드 보고 Kotlin으로 변경하는 것도 꽤 재밌을 것 같네요.

처음에는 코드 리뷰를 받는 것에 익숙하지도 않았고, 과제도 제 기준으로는 힘들었던 거 같았는데 이게 또 지나고 보니 나름 열정적으로 해서 추억이 된 거 같기도..

🎫 인프콘

인프콘 티켓팅에 선정돼서 2023년 8월 15일 컨퍼런스에 참여할 수 있었습니다.

발표자 분중에 김영한님 세션도 있어서 꼭 한번 실물로 보고 싶었는데 목표를 달성해서 뿌듯한? 느낌도 있었습니다.

실무를 하며 김영한님의 책(JPA 프로그래밍)도 많은 도움이 됐고, 인프런 강의 사이트에서 유일하게 유료 구매를 거의 다 했던 강의가 김영한님 강의라 실물로 뵙게되니 신기하기도 하고 그랬습니다.

현재 발표 자료는 Youtube 인프런 채널에서 발표 영상을 볼 수 있습니다. 이외에도 해당 채널에서 인프콘 2023 발표 영상을 확인할 수 있습니다.

전 아래의 세션을 들었습니다.

  • 인프런 아키텍처 2023 ~ 2024
  • 커뮤니케이션 잘하는 개발자의 4가지 습관
  • 어느 날 고민 많은 주니어 개발자가 찾아왔다 2탄: 주니어 시절 성장과 고민들
  • 인프런에서는 수천 개의 테스트 코드를 이렇게 다루고 있어요
  • 우리는 이렇게 모듈을 나눴어요: 멀티 모듈을 설계하는 또 다른 관점!

발표를 들으면서 제가 평소에 생각해왔던 것은 모든 프로젝트에 적합한 기술을 선택해야 한다는 것입니다.

서비스의 성격이나 규모를 미리 알 수 없는 경우에는 과하게 아키텍쳐를 고려해서 구현하는 것은 조금 지나친 느낌이 들기도 합니다. 중요한 것은 상황에 맞는 적절한 기술을 선택하고 그에 맞게 코드를 구현하는 것이라고 생각합니다.

발표자 분들의 이야기를 들으면서 이러한 관점에서 공감하는 부분이 많았습니다.

🚲 제주도 자전거 환상종주

작년 10월 중순, 회사 워크숍으로 제주도를 다녀왔습니다. 워크숍 이후에는 자유롭게 일정을 정할 수 있어서, 회사 동료분들과 함께 자전거를 타고 제주도를 한 바퀴 도는 일정을 1박 2일로 잡았습니다.

제주도 환상종주의 총거리가 약 230km여서 하루에 115km씩 타야 완주할 수 있었습니다.

자전거는 보통 출퇴근 따릉이만 타는 입장에서 할 수 있을지 걱정이 됐지만 그럭저럭 잘 따라갔었던 것 같아요.

제주도 한바퀴 코스를 하기 전에 체력 증진 및 완주를 위해 2번의 예비 라이딩도 했었네요.

우선 자전거가 없으니, 당근에서 중고 로드 자전거 15만원 정도에 구매하고 기본 장비도 사서 라이딩 연습을 했었습니다. 첫 번째 라이딩으로는 안양천 합수부에서 정서진까지 왕복 약 60km 정도를 갔었으며, 두 번째는 안양천 합수부에서 팔당 두물머리 코스(왕복 약 130km)를 갔었네요.

2번째 라이딩은 시간으로 보면 오전 8시에 출발해서 점심 저녁 먹고 집에 오니 저녁 8시였으니 대략 7~9시간 자전거를 탔던 것 같네요. 이 정도 타니 안장통이 뭔지와 엉뽕이 왜 중요한지 알겠더라구요..

제주도에서 라이딩을 했을때는 자전거 대여점에서 대여할 수 있는 종류가 많지 않아 MTB 자전거를 대여해서 라이딩을 했습니다.

MTB를 타보니 로드보다는 MTB가 더 안정적이라 조만간에 자전거를 바꿀 로드에서 MTB로 바꿔야겠다 생각했네요.

🏊‍♀️ 수영

작년 9월부터 수영을 시작했습니다. 해보니 정말 재밋어서 아마 평생 운동이 될 것 같아요.

image

위의 커리큘럼으로 현재까지 수업은 진행했습니다. 음.. Jira를 개인 용도로 쓰고 있긴 한데 프로젝트 관리 하기에 정말 좋을 것 같아요.

뭐 프로젝트가 아니라도 무언가 관리하기 좋은거 같아 개인 용도로 잘 쓰고 있습니다. ㅎㅎ.. 타임라인 기능이 직관적이라 지속적으로 하는 작업은 저렇게 가끔 정리하면 좋겠다 생각합니다.

수영을 처음할 때는 저녁 초급반으로 시작했습니다. 초급반에서는 나름 에이스라고 생각하면서 여유롭게 수영을 했었는데, 중급반을 가니 다들 너무 잘하셔서 45분이 정말 어떻게 지나가는지 모를 정도로 빨리 지나가는 것 같아요.
제자리 다이빙 하는 날이면 수업내내 정신을 차릴 수가 없고, 오리발 끼고 하는 날이면 사람들이 왜 이렇게 빠른지.. 언젠가 적응이 되지 않을까 생각되지만, 지금은 그렇습니다.

물속에 들어가면 온전히 나에게 집중되는게 정말 매력적이라 생각합니다. 최근에는 골전도 이어폰을 사서 주말에 자유 수영을 할 때 사용해봤는데 올해 산 물건 줌 정말 만족한 제품 중 하나입니다.

수영을 조금 더 잘 하게 되면 자격증도 좀 알아보고 도전해보고 싶네요.

📘 독서

image

여러 메모장 앱을 써봤지만, 지금은 Notion을 자주 이용하고 있습니다.

이렇게 읽은 책을 정리해 놓고 해당 책에 대해 좋은 내용이나 오탈자 등을 정리 해 놓으면 나중에 다 읽고 출판사에 오탈자 제보도 할 수 있고 관리하기도 좋습니다.

최근 넷플릭스 삼체 드라마를 보고 인상 깊어 바로 도서관에 가서 책을 대여해서 보고 있는데 등장 배경과 인물이 조금 다르지만, 전체적인 스토리는 동일한 것 같아 열심히 읽는 중이네요.

올해에는 전공 서적 이외 다른 분야의 책도 많이 읽고 싶네요.

마치며

회고를 처음 써 봤는데 너무 개인적인 이야기를 쓰는 거라 작성하고도 올릴지 말지 고민을 많이 했네요. 사실 아무도 관심이 없겠지만 뭔가를 오픈한다는게 뭐랄까 처음이 어려운 걸까 싶기도 하고.. 그렇습니다.

남은 2024년에는 정리가 조금 더 잘 된 한 해가 되면 좋겠네요. 듣고 있는 인터넷 강의도 모두 다 마무리하고, 읽고 있던 책들도 다 읽고 하나의 마침표를 찍고, 다음을 진행하면 좋겠네요.