2023년 하반기 회고 & 2024년 목표/계획

2023년 하반기 회고 & 2024년 목표/계획

💪 2023년 하반기 회고

2023년, 특히 하반기는 어떻게 지나간 건지 모를 정도로 정신없이 지나간 것 같습니다. 가장 큰 업데이트는, 아무래도 우리 회사가 개발에 기여하고 있는 블록체인 메인넷 오버 프로토콜에 관한 이야기들입니다. 지난 7월, 70만 명에 가까운 사전 등록 이후 오버월렛이 출시되었고, 곧 가입자가 500만 명을 돌파할 정도로 시장의 뜨거운 관심을 받았습니다. P-over라는 프로젝트명을 가지고 출발한 프로젝트는 OverNode(오버노드)라는 이름으로 두 번의 테스트 기간을 거쳤습니다.

OverNode는 제가 가장 많은 시간과 노력을 들인 프로젝트로, 누구나 홈 PC에서 블록체인 노드를 운영하고, 밸리데이터로 활동해 네트워크에 기여할 수 있는 데스크탑 전용 앱입니다. 10월에는 미리 선정된 유저들을 대상으로 클로즈 베타를 진행했고, 12월에는 오버월렛 유저라면 누구나 다운 받을 수 있는 오픈 베타를 진행했습니다. 올해 정식 출시를 앞두고 여전히 앱을 더 단단하게 만드는 작업들을 계속하고 있습니다.

6개월 전의 회고(2023년 상반기 회고 & 하반기 목표/계획)에 이어, 늦었지만 2023년에 대한 연말 정산을 해보고자 합니다. 여러 목표를 세웠는데, 절반 정도는 성공한 것 같아 개인적으로 뿌듯합니다. 기록은 개인적으로나 회사 안에서나 자투리로 많이 남겼는데, 외부에 공개할 수 있을 정도로 정제를 하지 못한 점이 조금 아쉽네요. 친한 친구가 매주 꾸준하게 글을 올렸던 것이 아주 대단하게 느껴졌습니다. 이번 연도는 조금 더 노력해보도록 하겠습니다.

회고, 시작합니다!

👨‍💻 As an engineer

2023년 상반기에는 프론트엔드 개발에 필요한 툴들을 공부해보고 파악하는 시기였다면, 하반기는 배움의 결과를 실전에 적용하고 더 깊게 파볼 수 있는 노력을 들인 시기였습니다. 실제 프로덕트를 유저에게 전달하며, 코드 레벨과 인프라 레벨에서 어떠한 것들이 좋고 나쁜지를 경험적으로 알게 된 것 같습니다.

곧 있을 두번째 테스트넷도 많은 관심 부탁드립니다!

제일 많은 시간을 들인 건 앞서 언급했던 OverNode이고, 그외 오버 프로토콜 랜딩 페이지와, 블록체인 익스플로러인 OverView 등을 겸사겸사 작업했습니다. 세 프로덕트 모두 퍼블릭하게 공개되었거나, 공개되고 있어서 피드백을 실시간으로 받을 수 있는 상황입니다. 프로덕트 빌더로서의 회고는 아래에서 볼 수 있습니다.

주제별로 몇 가지 구분해볼 수 있을 것 같습니다.

1️⃣ Electron & Node.js

여러모로 정이 많이 든 Electron

OverNode은 Electron이라는 프레임워크를 사용해 만들어진 데스크탑 앱입니다. 기본적으로 Node.js 환경에서 돌아가기 때문에, UI를 구성하는 앱의 프론트엔드(Electron에서는 Renderer process라고 부름)뿐만 아니라, 앱의 백엔드(Electron에서는 Main process라고 부름)를 다룰 일들도 있었습니다. 오히려 React 컴포넌트와 스타일링에 들인 시간보다, 백엔드에서 데이터를 어떻게 불러오고, 여러 개의 프로세스를 어떻게 관리하는지에 대한 고민을 하는 시간이 더 많았던 것 같습니다.

그러다보니 프론트엔드에서 자주 쓰이는 React 중심의 라이브러리 이외에도 다양한 라이브러리들을 접하게 되었고, 자바스크립트 생태계랑 조금 더 친해진 느낌이 들었습니다. 제가 도입했던 것 중에 생각나는 건 async-mutex(비동기 동작에서의 레이스 컨디션을 해결하기 위함), find-process(pid 등으로 프로세스를 검색), node-cache(메모리 캐시) 등이 있네요.

Node.js와 자바스크립트에 더 익숙해지다 보니, 자연스럽게 귀찮은 과정들을 잘 짜인 스크립트를 통해 자동화할 수 있게 되었습니다. 자바스크립트를 단순히 UI 구성을 위한 도구가 아닌, 프로그래밍의 도구로 바라볼 수 있다는 점이 개인적으로는 만족스럽습니다.

2️⃣ Clean code

프로젝트의 크기가 커지고, 기능이 추가되면서 레이어도 늘어나면서 복잡도가 매우 증가하게 되었습니다. 읽기 어려워진 코드로 인해 잔 버그가 생겨나고, 버그를 고치기 위해 기존 코드를 다시 이해하는 시간이 늘어나면서, 어떻게 하면 깔끔하고 읽기 좋은 코드를 작성할 수 있을지 고민했습니다.

러프하게 적어보는 개발 과정에서 들었던 고민들

  • OverNode는 앱 내부에 블록체인 노드를 운영할 수 있는 클라이언트들이 포함되어 있는데, 이 클라이언트들의 프로세스를 어떻게 충돌 없이 매니징할 수 있을까?
  • 하나의 화면을 보여주기 위해 수많은 데이터 소스로부터 데이터를 받아오고, 이를 정제해야 하는데, 타입 구조는 어떻게 가져가고 일련의 과정을 가독성 좋게 작성할 수 있을까?
Grokking Simplicity by Eric Normand

회사에서 사내 스터디를 진행하면서, 함수형 프로그래밍을 접하게 된 것이 나름의 터닝 포인트였던 것 같습니다. Grokking Simplicity라는 책을 접하게 되었는데, 모나드, 커링 등의 어려운 단어(?)와 개념들 말고, “함수형 프로그래머처럼 사고하자” 를 일 순위로 다루는 좋은 책입니다. 앱을 구성하는 레이어의 목적을 나누고, 이 레이어 위에 올라간 함수들은 반드시 하위 레이어의 함수를 호출해야 합니다. 함수 간 Call Graph를 그리다 보면, 특정 레이어을 스킵하거나, 더 상위 레이어를 호출하는 함수들이 반드시 나오게 되는데 이러한 녀석들이 리팩터링의 대상이 됩니다.

이 책을 읽고 바로 코드의 질이 수직으로 상승한 건 아니지만… 세상을 목적에 따라 레이어 단위로 쪼개서 바라보게 되었습니다. 사고의 프레임워크를 배운 느낌이랄까요.

3️⃣ Infra

배포 작업도 나름 자주 하다 보니, 여전히 부족하지만 AWS나 Github Action 등을 찍먹 중에 있습니다. 예전에 혼자서 공부할 때 Github Repo와 Vercel 등을 원클릭으로 연동해서 배포한 경험들은 있었는데, AWS 안에서 직접 버킷 세팅하고, CDN 붙이고, 도메인 붙이는 과정 등을 해보니까 느낌 정도는 알겠다… 수준입니다. AWS의 방대한 서비스를 적절히 이해하고, 활용할 수 있는 능력을 갖추고 싶네요.

에러 로깅 플랫폼인 Sentry도 꽤나 많은 시간을 들였는데요, 코드 이곳저곳에서 throw를 자주 하다 보니 (+ 앱의 복잡성이 올라가다 보니) 수많은 에러 로그들에게 뒤덮였던 시기가 있었습니다. 지금은 나름 정리가 되었는데, 이러다 보니 정말 다양한 디바이스에서 생기는 에러들을 알 수 있었습니다. 정리 과정에서 인사이트도 꽤나 얻었네요. 특히 Windows 쪽에 소수의 알 수 없는 에러들이 있는데… 이 부분도 2024년 도전 과제가 되겠네요.

4️⃣ Bleeding edge

2023년 상반기 회고 & 하반기 목표/계획
⬆️ 상반기 회고 💻 Frontend Developer 주니어 프론트엔드 개발자로서, React와 같이 사용하는 새로운 기술 스택들을 많이 접하고 쌓아나가고 있습니다. 이를 나열하면 다음과 같습니다. * Framework: Electron, Next.js (13) * CSS: Emotion, TailwindCSS * State management: Jotai, Zustand * Data fetching: SWR * Testing: jest, Storybook(UI) * 기타: ethers.js, Lottie, i18n 등등 위 스택들 모두 공식

저번 회고 때, React에서 요즘 밀고 있는 서버 컴포넌트에 관심이 많다고 했습니다. 개인적으로 렌더링에 대한 최신 트렌드에 관심이 많아서, 꾸준히 트래킹은 하고 있습니다.

다만 최신 기술을 적용함으로써 생기는 사이드 이펙트들이 있는데요, 저희 팀 내에선 우스갯소리로 최신 기술의 역설이라고 부릅니다. 새로움은 종종 부작용을 낳는데, 새로운 것을 소개하는 글이나 영상에선 장점에 대한 언급을 주로 다룹니다. 그래서 새로운 기술을 조사하다 보면, 단점에 대해 무뎌지는 경우가 많은 것 같습니다. 그 외에도, 새로운 것이 무조건 좋다고 할지라도, 팀 전체가 해당 기술에 대해 익숙해지고, 합의를 해야 그 기술을 올바르게 쓸 수 있는 것 같습니다.

새로운 프로젝트에는 새로운 방법론을 도입해 봄 직 하지만, 기존에 문제가 없는 코드를 “왜 써야 하는지”에 대한 고민이 없이 새로운 것으로 무작정 대체하는 것은 좋지 않은 것 같습니다.


⛏️ As a product builder

기억이 휘발되기 전에 회고하기

프로덕트 사이클을 한 번 겪으며, 서비스 배포 역시 같이 경험해 봤습니다. 배포는 처음이라 떨릴 줄 알았는데, 막상 배포 전후에 쏟아지는 이슈 리포트에 둘러싸여 정신이 없었네요.

유저에게 직접 앱이 도달하면서, X, 디스코드, 텔레그램 등에서 다양한 반응을 볼 수 있었습니다. 그중에는 우리가 전달하고자 하는 가치에 같이 공감해주는 모습도 많았고 이 부분에서 뿌듯함을 느꼈습니다. 물론 버그에 대한 불평불만도 굉장히 많았는데, 그렇다고 유저들이 만드는 수십억 개의 멀티버스에 모두 대응하는 건 어려운 일이라, 항상 사고 방식에 “이게 정상 작동하지 않는다면?”이 기저에 깔려 있어야겠다는 교훈을 얻었습니다.

소소한 기획도 진행했습니다. 클로즈 베타에서 오픈 베타로 전환되면서, 수십 배로 늘어날 유저 수에 대응해 버그 리포트를 자동화할 필요가 있었습니다. 클로즈 베타 당시의 기억을 더듬어, 버그 리포트에 들어가면 좋을 것들을 스키마 형태로 정의하고, 제가 너무 잘 사용하고 있는 Arc의 리포트 UI를 참고해서, 어떤 방향으로 디자인이 진행되면 좋을지 공유했었습니다.

하나의 프로덕트가 완성되기까지, 수많은 사람과의 협업이 필요했습니다. 특히 블록체인 프로덕트 특성상 어렵고 생소한 기술적 개념을 유저에게 설득력 있게 전달해야 하는데, 프론트엔드에서 개발하다 보면 그 흐름의 중간에서 다리 역할을 할 때가 종종 있습니다. 협업 과정이 재밌으면서도, “나는 이 흐름에서 어떤 역할을 제일 잘할 수 있을까”를 고민했네요. 기술을 깊게는 알지 못하더라도, 빠르게 소화할 수 있는 것 같아 이를 보기 좋게 정제하는 게 제가 제일 잘할 수 있는 일이지 않을까 싶습니다. 파워 J라서, 정리를 안 하고는 못 배기기도 하구요. 🤣


✏️ As a student

회사에선 캐주얼한 개발 스터디를 진행하면서, 느리지만 꾸준히 새로운 지식을 습득하고 있습니다. 총 세 개의 책을 훑어봤습니다.

  • Design Pattern - OOP에서 자주 쓰이는 패턴들에 대한 눈도장 정도 찍어두었습니다.
  • Grokking Simplicity - 함수형 프로그래밍을 입문했습니다. 앞으로 더 공부해보고 싶은 주제입니다.
  • HTTP 완벽 가이드 - HTTP의 백과사전 같은 느낌으로, 조금 지루한 책입니다. 모호하게 단어만 알고 있는 주제(e.g. 쿠키)들에 대한 개념을 보충했습니다.

카이스트 블록체인 학회 Orakle에서는 부학회장을 맡았습니다. 하반기에는 회사 일이 조금 바빠져서, 학회 팀 활동에 시간을 많이 들이진 못해서 정말 아쉬웠습니다. 이더리움 비콘 체인 및 로드맵에 대해서 공부한 결과를 Canon의 형태로 퍼블리시하고자 작업 중에 있습니다. (Ethereum Roadmap Canon - WIP)

이더리움의 컨센서스 구조는 파보면 파볼수록 재밌습니다. 수많은 참여자가 어떻게 하면 바람직한 네트워크를 형성할 수 있을지, 여러 연구자가 고민한 흔적이 보입니다. 인센티브 구조는 조금 복잡하긴 하지만 파라미터 하나하나(e.g. 밸리데이터로 활동하기 위해선 최소 32 ETH를 예치해야 함)에 그 이유가 있다는 점이 신기했습니다. 다만 공부할 수 있는 소스는 한정적이라서, eth2book을 정독해 보는 정도로 공부를 했습니다.


🤩 더욱 기대되는 2024년

또학연장

2023년은 개인적으로 너무 만족한 한 해였습니다. 딱 1년 전에, 성장하는 회사 안에서 적절한 시기에 합류했고 많은 경험을 하며 스스로 성장하는 것이 많이 느껴졌습니다. 슈퍼블록을 통해서 이러한 기회를 얻을 수 있는 것은 매우 감사한 일입니다!

2024년은 어떤 일들이 있을지 기대가 됩니다. 일단 지난 한해 동안 이어오던 휴학을 연장해두었습니다. 학교의 휴학 제한이 최근에 풀린 상황이라, 조금 더 길게 사회에서 경험을 쌓을 수 있을 것 같습니다.

또한 올해에는 오버 프로토콜의 메인넷이 출시하면서, 제가 담당하고 있는 여러 프로덕트에서도 정식적으로 세상에 공개될 것으로 보입니다.

이제 2년 차 개발자에 진입하는데, 너무나 다행히도 제 생각보다 개발이라는 업무가 잘 맞는 것 같습니다. 2024년은 개발자로서의 역량을 더 키우는 한해가 되었으면 합니다. 여타 다른 RPG 게임처럼, 프론트엔드 개발자도 자신에게 맞는 특성을 찾아 전직을 해야 합니다. 엔지니어링에서 강점을 가져갈 수 있고, 완성도 높은 프로덕트를 빠르게 구현하는 테크도 있을 것 같네요. 욕심으론 다 잘하고 싶어서, 분야를 막론한 공부들을 조금 해보고자 합니다.

  • 함수형 프로그래밍을 더 깊게 파보기: 인프런에서 유인동 님의 흥미로운 강의를 하나 접했네요. (함수형 자바스크립트 프로그래밍)과 함께 수강해보고자 합니다.
  • JavaScript/TypeScript 딥다이브: 모던 자바스크립트 Deep Dive라는 책도 있고, 유명한 사이트도 있네요. 주로 쓰는 언어이면서도, 이를 깊게 마스터하는 건 쉽지 않은 일이라는 걸 최근 깨달았습니다.
  • 테스팅을 통한 Robust한 앱 만들기: 테스트 코드는 늘 작성해야 한다는 것을 알면서도, 다른 기능 구현에 우선순위가 밀리는 것 같습니다. 테스팅에 대한 전체적인 생각 그림을 제대로 그려나가고 싶네요.
  • 주로 쓰는 스택의 소스 코드 분석하기: React, Next.js, SWR 등등… 최근에는 Excalidraw가 오픈 소스라는 것을 알아서, 이 친구를 보는 것도 재밌겠다 싶었네요.
  • Figma 배워보기: UI 디자인뿐만 아니라, 보고서 및 PPT 작성에도 요즘 자주 쓰이는 것 같습니다. 고등학교 때는 파워포인트를 꽤나 잘 다뤘었는데… 지금부터라도 Figma를 다룰 수 있다면 유용하게 쓰일 것 같아요.
  • 그리고… 운동 열심히 하기

써놓고 보니 방대하긴 하네요. 다 할 순 없더라도, 1년이라는 구간의 적분 값이 제 예상보다 클 수 있다는 점을 작년을 지내며 알게 되어서, 하나하나 잘해보도록 하겠습니다.

슈퍼블록 화이팅! 오라클도 화이팅! 🥳 다들 화이팅입니다!

링크드인 | Github | X(Twitter)