2020년 상반기에는 어떤 이슈가 있었고, 어떤 것들을 배웠는지를 정리해 보려고 한다.

이번 상반기에는 주로 서비스 관점에서 많은 고민을 해온 것 같다.

웹 개발자로서, 서비스와 사용자를 이해하기 위해 노력했고, 특히 Project Owner로서, 프로젝트의 일정을 관리하고, 팀의 문화와 분위기를 만들기 위해, 고민을 많이 한 것 같다.

코로나

이번 연도 최고의 핫 이슈는 코로나 와 마스크 인 것 같다.

코로나 확진자 동선이 공공 데이터로 공개되고, 개발자들은 공공 데이터로 각종 map 들을 이용해, 코로나 확진자 동선을 보여주는 서비스들이 많이 개발되었다.

다니던 회사에서도 그에 발맞춰 코로나 와 마스크에 대응하는 서비스를 개발하게 되었는데, 목표를 가지고 빠르게 개발하고, 유저의 반응을 보면서, 점진적으로 대응하는 방법들이 실험적으로 도입되었다.

이때터 회사와 팀 분위기가 많이 활발해진 것 같다. 프로젝트 규모와 성공 여부와는 별개로, 성취감 있고, 주도적인 경험들이 작지만 정말 값진 무기가 되었다는 생각이 든다.

특히, 처음으로 사용자가 대량으로 몰리는 경험을 하게 되었는데, 대량의 사용자를 대응하기 위해, 분산과 캐시의 중요 점을 매우 깨우칠 수 있었다.

조금 아쉬웠던 점은, 속도전이 중요했던 프로젝트여서, 크런치 모드가 무엇인지 잠시 맛볼 수 있었다.

서비스 개편

회사를 다닌 지 3년 만에, 오랫동안 바라왔던 일부 서비스가 개편되었다.

첫 1년은 어드민을 개편하고, 다음 1년은 데이터를 정제하고, 그다음 1년은 사용자를 위한 서비스를 개편하였다.

돌이켜보면, 시간이 너무 오래 걸렸는데, 작업물의 실제량은 크지 않았으나, 개편 전까지 기존의 서비스를 계속 유지보수 하여야 했고,

특히 오랫동안 서비스가 유지되면서, 입에서 입으로 협의 되었던, 로직과 데이터들을 찾아내어, 정제하고, 문서화하는 작업들이 오래 걸렸던 것 같다.

더구나 개편이 장기화되다 보니, 개편을 같이하던 동료가 늘어났다, 줄었다, 바뀌었다 를 반복하면서, 프로젝트의 일정이 요동치게 되었는데, 개인적인 중심 잡는 과정이 참 어려웠던 것 같다.

코드와 프레임워크의 변화를 넘어서, 서비스가 앞으로, 안정적으로 유지되고, 우리가 해나가야 하는 발판을 만들기 위해, 개발팀, 운영팀, 마케팅팀, 영업팀 등 모두와 함께 협의하고 만들어나가는 과정들은 쉽지 않은 작업이었다.

하지만 서비스가 낡은 옷을 벗고, 새로운 옷을 입었을 때, 걱정과 불안도 많았지만, 서비스뿐만 아닌 우리의 마인드 또한 새로운 옷으로 갈아입게 되어, 서비스에 대한 자신감이 생겼고, 앞으로 어떤 서비스를 만들더라도 자신감을 불러일으켜 줄 것 같다.

시간이 너무 오래 걸렸지만, 하나의 서비스를 처음부터 끝까지 다시 만드는 작업은 정말 값진 경험이었다.

모노 레포는 최고

서비스를 개편하면서, 그동안 여러 프로젝트로 파편되어 있던, 프로젝트들을 하나의 모노 레포로 모으는 작업을 진행하였다.

각각의 프로젝트에서 사용되는 Component 들이 재사용되지 못하고, 각각의 Project 전용으로 남겨져 있는 게, 너무 아까웠는데, Mono Repo 로 여러 프로젝트를 한곳에 모으고, Component Package 로 분리해서 재사용하면서 쓰고 있는데, 만족스럽다.

특히 Storybook 와 Jest, Typescript 같은 환경 세팅이 더 이상 각각 프로젝트가 아닌 전체적으로 공유되면서, 관리 포인트가 줄어든 것도 꽤 이점이다.

아쉬운 점은 Package 단위를 분리하는 게 아직 미흡한 것과 각각의 프로젝트가 하나의 Repo 를 공유하면서 Commit Log 와 Branch 관리가 아직 정리가 안 된 점들인데, 차츰 개선점을 찾아야겠다.

성능도 챙겨보자

사이트를 개편하면서, 그동안 정말 하고 싶었던 성능 개선도 같이 진행해 보았다.

거창하게 성능 개선이라고 지칭하였지만, 기본적인 것들을 안 지키고 있던 것들이 많아서, 기본을 잡는 작업을 많이 한 것 같다.

첫 페이지 Rendering 시 필요한 코드를 최소화하기 위해, CodeSplitting, LazyLoading, 공용 모듈 Chunk 로 최대한 분할하고, 정적인 화면을 SSR (JAMStack) 으로 만드는 작업을 서버 개발자들과 함께 많이 고민했었다.

특히 스켈레톤 UI 가 재미있었는데, 성능은 그대로지만, 곧 이런 화면이 나올 거야 같은 UI 는 만들기도 쉬우면서 강력한 효과를 내준 것 같아 매우 흥미 있게 작업했다.

CSR 으로 React 를 사용하고 있는데, 성능을 개선하기 위해서, React 문서를 다시 읽어보니 정말 모르고 있었다는 생각이 들어 다시 공부했다. 아직도 잘 알고 있는 것 같지는 않지만, 최적화 문서를 읽으면서 정말 많이 배운 것 같다.

아직 정말 만족할 만큼의 속도를 내고 있지는 않지만, 그래도 많은 개선이 이루어져서, 어느 정도 만족한다.

3년의 시간

한 회사를 다닌 지 벌써 만으로 3년이나 되었다. 한 곳에서 안정적으로 성장하면서, 여러 시도와 도전을 하면서, 많은 것을 배웠다.

한 서비스에 애정을 가지고, 이를 발전 시키기 위해 오랜 시간 팀이 함께 노력하는 경험은, 쉽게 할 수 없는 중요한 경험인 것 같다.

하지만 조직도, 리더도, 직책도 정말 많이 바뀌면서 개인적으로는 혼란기가 많았던 것 같다.

변화하는 환경마다 다양한 문화와 협업을 시도해 보았고, 좋은 점과 아쉬운 점들을 느끼며, 많은 성장을 이루어온 것 같다.

WebTeam Leader 와 Project Owner 를 거치면서, 여러 팀과 함께, 우리가 만드는 서비스를 잘 이해하고, 발전시키기 위한 방법이 무엇일지 고민해 왔고, 최선을 다해 왔지만, 항상 이렇게 하는 게 맞는지에 대한 고민은 항상 있었던 것 같다.

앞으로도 고민이 계속 되겠지만, 항상 나와 우리에게 맞는 방법을 찾기 위해, 여러 방법을 배우고 익히며, 적용해 보면서 정답이 아닌 올바른 방향으로 가고 있는지, 항상 고민해 봐야겠다.

함께 자라기

지금까지 일하면서, 느낀 점은 혼자서만 잘하는 개발은 한계가 있다는 것이다.

어떤 작업이 되었던, 도움을 주고, 도움을 받을 수 있는 개발자가 되어야겠다는 생각을 많이 가지게 되었고, 함께 일할 수 있는 개발자로서 성장하기 위해서 여러 책을 읽었다.

이중 맨먼스 미신 책이 가장 기억에 남는데, 전문가팀은 작으면 작을수록 좋고, 두 사람이 함께 일한다고 해도 커뮤니케이션 비용 때문에, 2배의 작업속도를 가질 수 있는 건 아니라는 점이다.

때문에, 손발이 맞는 개발자와 함께 일할 수 있다는 것은 크나큰 축복이라는 것을 느낄 수 있었다.

함께 일하는 능력은 개발 능력과는 또 다른 개발자의 중요한 능력치 인 것 같다.

앞으로도, 함께 일할 수 있는 능력을 기르기 위해 많은 노력과 배려를 아끼지 않아야겠다.

마치며

이번 상반기는 개발자로써 앞으로 성장하기 위해서, 어떤 노력들을 해야할지 고민할 수 있는 기간이 였던거 같다.

아직도 부족한게 많지만, 항상 앞으로 발전하며, 서비스에 대한 고민과 이해가 있는 개발자가 되어야 겠다.

Javascript is great We may not be great

Javascript is great We may not be great