원래는 상반기, 하반기를 나눠 회고를 하려고했으나 1월에 너무 많은 일이 일어났기 때문에 1월만큼은 정리해야한다는 생각이 문득 들었다.
폭풍처럼 휘몰아치는 일들이 많아서 그런지 정리가 잘 안되는 느낌도 있는 것 같아 1월 회고를 작성해본다.
본격적으로 학교에 복학하기위해 천안으로 방을 옮겼다.
정들었던(?) 신림집 안녕~ 1년동안 즐거웠어~
4명이 살던방에 1자리가 비어 빈자리를 Get 했다!
지방이라서그런지 가격대비 엄청나게 큰 집을 쓰게 되어 상당히 만족하며 지내고있다.
주방이 넓기도 해서 밖으로 한발자국도 안나가고 장봐와서 집에서 이것저것 해먹으면서 살고있다. 😊
우테코 끝나고 오랜만에 연락온 고니에게 생활습관 스터디 참여 제안이 들어왔다!
막연한 복학 생각에 새해 목표나 다짐이 뚜렷하지 않은 상태였다.
생활습관을 바로잡는것부터 목표하는 바를 쌓아 올려가는 한해가 되는것도 정말 좋은 기회인 것 같아 바로 너무좋아! 하고 참여의사를 밝혔다.
짱 좋아...!!
우테코에서 만난 고니, 코난, 라잇과 6기 프리코스 채널을 통해 만나게된 호랑, 에보, 루마 이렇게 7명이서 생활습관 스터디 Focus를 진행했다.
FOCUS(생활습관 스터디)는 꾸준한 학습과 운동을 통해 지속적인 성장을 추구하는 스터디로 평일 오전 9시부터 오후 5시까지의 투두리스트를 스터디 노션에 작성하고 아침 저녁으로 데일리 회고를 진행하는 방식으로 운영된다.
Focus 첫날 작성했던 투두리스트!
이때는 강의를 열심히 볼 수 있는 시간이 있었는데... 🌪️
매일 아침 9시에 서로의 할일을 이야기하는 시간이 있어서 자칫 늘어질 수 있었던 일상을 타이트하게 가져갈 수 있었다.
특히 9시부터 17시까지 코어타임을 가져간다는 느낌이 강해서 한달동안 주어진 시간동안 꽤나 깊은 몰입도를 가져가기도 했다.
Focus를 진행하며 달성했던 것들은 다음과 같다.
개인적으로 하루 루틴을 만드는것을 좋아한다.
아침에 일어나서 루틴이 정해져있으면 아무리 정신없는 날이여도 정해진 루틴을 행하면서 안정감을 찾을 수 있기 때문이다.
매일 오전 9시에 데일리 미팅을 하는 Focus의 운영방식 덕분에 아침에는 무조건 늘어지지 않고 일어나는 습관을 가질 수 있었다. 아침 7~8시에는 일어나서 아침을 먹고 가벼운 운동 혹은 스트레칭과 함께 하루를 시작하는 날이 이번 한달동안 꽤나 많았다.
가끔 피치못할 일정으로 인해 아침을 거른적은 있지만 기상시간 만큼은 꾸준히 지켰다. 😎
오전 9시부터 오후 5시까지 수행할 일들을 노션에 정리하고 공유하며 5시에 개선점을 돌아보는 시간을 가지면서 주어진 시간에 내가 얼마만큼의 퍼포먼스를 낼 수 있는지 어느정도 객관화 할 수 있게 되었다.
워낙 벌인일이 많아서 하루에 주어지는 일들이 꽤 많은데 이를 나열하고 우선순위를 정해가면서 작업을 하는 습관도 가지기 시작했다.
우선순위가 정말 낮고 기간에 구애받지 않는 일에 대해서는 백로그 카테고리를 만들어서 우선순위가 낮은 일들을 쌓아두고 시간이 남을때 하나씩 꺼내서 처리하려고한다.
대략적인 수행 시간도 측정해가면서 스스로의 생산성을 책정하고있다. 아직 완벽하게 책정은 못하지만 많은 도움이 되고있다.
원래 알고리즘을 정말 하기 싫어해서.. 매번 새해 목표로 알고리즘을 잡고 포기하는 경우가 대다수였다.
아침에 프로젝트를 빡세게 하기에는 생산성이 비교적 떨어진다고 생각하여 알고리즘 1문제를 풀어봤다.
일정이 바쁜 날을 제외하고는 하루에 한문제는 풀려고 노력해봤다.
매일 아침에 여유롭게 커피 한잔하며 알고리즘 문제창을 볼 수 있는 그런 모습까지는 올 수 있었다.
이제 문제를 봐도 크게 거부감이 들지 않는다.(그래도 DP는 아직 어렵다..) 아직은 알고리즘을 잘하는 수준까지는 바라진 않는다.
일단은 알고리즘이 재밌어지는것이 목표다.
글또에서 Docker, java Multi-Thread 총 2개의 강의를 신청해서 듣기 시작했다.
두 주제 모두 우테코를 하면서 접하지 못했던 주제라서 호기심이 강했기 때문에 강의를 듣기로 마음먹었다.
1월 초에는 하루에 1시간 이상 꾸준히 강의를 보면서 학습을 했다. 시간이 아까워서 가끔은 지하철에서도 간간히 듣기도 했다.
중간부터는 프로젝트 일정이 너무 바빠지면서 강의를 못들었는데 2월에는 연휴나 주말을 이용해서라도 꾸준히 들어야겠다.
Docker 강의는 kubernetes까지 있어서 생각보다 양이 많다.. 시간 분배를 잘 해봐야할거같다.
Docker의 경우 적어도 개강 전까지는 docker-compose 부분까지 듣고 피움 프로젝트와 동아리 프로젝트 배포환경을 Docker로 구성해보고싶다는 작은 목표도 있다.
함께 달려온 고니, 코난, 에보, 호랑, 루마, 라잇 감사합니다 🙇♂️
방향성이 없다고 생각되거나 할일이 없다고 느낄때는 2024 회고에서 TODO 라고 작성해놨던 부분을 상기하면서 할수있다!를 외쳐보자.
23년 말에 작성한 TODO보다 훨씬 더 많은 일들이 생긴 지금이지만 오히려 좋다고 생각한다.
Focus에서 호랑이 CS 스터디를 하는 모습을 보면서 꽤 많은 동기부여를 받고있기도 해서 여유가 될때쯤이면 CS 스터디도 하나 운영해봐야겠다는 생각이다.
2월부터는 2주 단위로 스프린트 목표를 잡고 달성하는 방식으로 진행될 예정이다.
1월에는 생활패턴, 동아리 일정에 주로 초점을 맞춰서 한달을 보낸 것 같다.
생활패턴도 어느정도 자리 잡았고, 주어진 일정도 잘 마무리했다고 생각한다.
2월은 1월의 생활패턴을 더 업그레이드 해보려고한다.
아침에 알고리즘 한문제를 풀고 하루 30분 독서를 추가해볼 생각이다.
요즘 DB 볼일이 많아지기도 하고 성능 최적화에 신경쓸 시기가 다가오고있어서 Real MySQL을 읽을 예정이다.
어렵다는 후기가 많은 만큼 하루에 모든 내용을 다 읽으려고 하기보단 여러번 읽어보며 체득한다는 생각으로 가져가도 좋을 것 같다.
일정 측면에서는 2024 상반기 백엔드 교육준비, MOA 프로젝트, 코인 마이그레이션이 핵심이 될 것 같다.
중간에 루마, 말랑과 함께하게된 MOA 프로젝트 출시를 2월중으로 계획하고있기 때문에 대부분의 일정이 여기에 주된 초점이 맞춰지지 않을까 생각이 든다. (MOA 프로젝트에 대한 회고는 별도로 진행할 예정이다.)
정리하자면 이렇게 2주짜리 목표를 정의할 수 있겠다.
일정을 보니 뭔가 2월 회고도 쓸거같다..
뭔가 올해는 월별 회고가 꾸준히 나오는 년도가 되지 않을까 생각이든다 😇
쩝쩝박사?
쩝쩝박사는 전국의 맛집을 탐방하게 도와주는 서비스로 전국의 가게 정보를 확인하며 지도에 맛집 핀을 남기는 기능이 존재한다.
그 밖에도 실시간 GPS를 통해 다녀간 음식점 확인, 별점, 북마크, 리뷰 쓰기, 친구 리뷰 확인 등의 기능을 제공하고 있다.
때는 2022년 상반기. 당시에는 6개월짜리 프로젝트로 기획되었던 쩝쩝박사라는 프로젝트가 있었다.
하지만 코로나로 인한 비대면 상황에 업무 프로세스를 빠르게 구축하지 못했던 상태라 프로젝트의 진척도가 많이 느려졌고, 이는 지금까지 배포를 하지 못한 프로젝트가 되었다.
1월에는 동아리 회장을 맡으면서 이렇게 늘어지고있는 프로젝트를 어떻게든 마무리지어야겠다는 생각이 들었다.
프로젝트 진행도를 살펴보니 정말 1달이면 끝날 거 같은데 왜 끝나지 않는거지? 의문점이 많이 들었다. 🤔
백엔드도 API 개발을 마친 상태고 FrontEnd에도 가용할 수 있는 인원이 꽤나 많은 상황이였다.
하면 할 수 있는 상황이라 더이상 미룰 수 없다고 판단한 나랑 프론트엔드 수장(?) 친구가 목소리를 내어 QA를 강행하고 Production 배포까지 후다닥 진행시켜버렸다.
다음날 서울에서 약속있는데 밤 12시부터 배포하겠다고 와다다다다 배포환경 구축하던 나야나..
마지막 사진이 오전 5시 50분인건... 🥱
1월 20일날 QA를 하고 1월 29일에 프로덕션 배포를 했다.
데드라인이 명확하게 박혀버리니까 프로젝트를 진행하던 팀원들도 위기감을 느낀건지 동기부여를 받은건지 모르겠지만 엄청난 생산성을 보여주었다. 프론트엔드의 경우에는 한달동안 100개의 이슈를 해결하는 모습을 보여주기도 했다.
백엔드의 경우 이미 프로젝트에 참여하는 구성원들이 동아리가 아닌 다른곳에 취업하거나 소속되어있는 상태라 평일 낮에 대응하기가 어려운 상황이였다. 회장, 백엔드 트랙장을 맡은 나에게 책임이 생겼고 나는 충분히 해낼 수 있을거라고 생각해 기꺼이 이슈들을 받고, 배포 단계에 참여하고 백엔드 이슈를 주도적으로 관리했다.
프론트가 100개의 이슈를 해결했다면 나 같은 경우에는 6시간만에 프로덕션 배포하기라는 기가막힌 도전을 했다.
처음보는 낯선 코드들 사이에서 백엔드/프론트엔드 프로덕션 배포환경 구성, jenkins CD 파이프라인 구성, nginx 설정, 도메인 연결, 그 사이에 일어난 트러블 슈팅 등등 6시간만에 정말 많은 일이 있었지만 무사히(?) 배포할 수 있었다.
이제 이력서에 신규 프로젝트 배포 환경을 6시간만에 구축할 수 있습니다.
이거 한줄 써야하나 싶다 😂
이번 프로젝트를 배포하면서 프로젝트의 주인은 누구인가?
라는 생각이 계속해서 들었다.
화면 디자인과 각종 기획을 수행한 UI/UX?, 클라이언트를 멋지게 구현한 프론트엔드와 안드로이드?, API 및 배포환경을 구성한 백엔드..?
내가 생각하는 결론은 모두가 주인의식을 가져야한다고 생각한다.
팀 내에서 공통적으로 발생하는 issue를 적극적으로 pull하면서 작업할 수 있는 그런 주인의식이 필요하다고 생각한다.
분야 상관할거 없이 이슈를 가져가서 분석하고 공유하는 자세 자체가 협업의 완성도를 높여준다고 생각한다.
그와 동시에 일정관리를 해주는 역할 또한 중요하다고 생각했다.
너무 큰 단위의 작업은 쪼개서 진행하고, 작업 내용은 최대한 공유하고, 어려움이 있다면 즉시 공유하고 해결할 수 있는 그런 문화가 있는 팀을 만들어야 프로젝트든 기존 프로젝트의 새로운 feature든 생산적으로 나올 수 있는 것 같다.
지금은 동아리 내에서 개발 관련 컨퍼런스를 할게 아니라 공유하는 방법, 질문하는 방법과 같은 소프트스킬에 대한 부분을 다함께 인지하고 가야할 필요성을 느끼고 있는 요즘이다.
1년 6개월간 늘어지는 프로젝트를 더이상 볼 수 없어 프로덕션 배포를 강행했다.
이제 실제 사용자가 서비스에 접근하기 시작하면서 불안정한 이슈들이 엄청나게 몰려들어올 것이다.
프론트엔드는 디테일한 부분을 지속적으로 보완해야할 것이고, 백엔드는 로깅 및 정책 변경에 신경써야할 것이다. UI/UX는 사용자가 서비스 플로우를 더욱 자연스럽게 수행할 수 있도록 점차 개선해나가야할 것이다.
백엔드에서 추가적으로 도전해야할 과제는 다음과 같다.
등등 위에서 언급한 이야기 말고도 할건 많다.
프로젝트 경험을 통해 학습을 하고 자유롭게 실패하고 도전할 수 있는 동아리 환경을 팀원들이 적극적으로 활용했으면 좋겠다는 생각이다.
Koin 사장님기능?
Koin 사장님 기능은 가게 점주분들이 한기대 커뮤니티 서비스 Koin에 자신의 상점 정보를 직접 관리하면서 학생들에게 최신화된 정보를 제공할 수 있도록 도움을 주는 서비스다.
이 기능은 기존에 존재하는 프로젝트에 신규 서비스를 추가하는 상황이다.
한가지 특이점이 있다면 담당인원 및 트랙장이 그 사이에 2번 이상 바뀌었고 그 사이에 인수인계가 되지 않아 혼돈의 카오스 상태라는 점이다.
트랙장을 잡으면서 직전 트랙장에게 아주 정성스러운 인수인계를 받았지만 그 전은 그렇지 못했기 때문에 프로젝트 이해도에 공백이 매우 크게 발생한 상황이었다.
여기도 난생 처음보는 코드들이 가득했고 API 버저닝조차 되어있지 않은 참혹한 상황이었다.
KOIN은 Android 앱을 지원하기 때문에 백엔드에서 API 버저닝을 해줘야한다.
DB에는 미사용 스키마가 한가득이었고 레거시 코드의 크기는 실로 엄청났다.
무수히 많은 주석과 @ApiOff 어노테이션 또한 코드의 흐름을 읽기 힘들게 만들어줬다. (미사용 상태로 둔 API를 대상으로 선언해둔 어노테이션이다)
그 사이에서도 새로운 기획은 나오고 이에 대한 기능을 개발해야했기에 레거시 코드와 강하게 성장중인 백엔드 팀원들이 이곳에 남아있었다.
KOIN 사장님 기능도 쩝쩝박사 프로젝트처럼 금방 배포할 수 있는데 애매하게 늦춰지고 있던 프로젝트였다.
이 또한 QA를 진행하고 도출된 이슈를 해결하는 방식으로 작업이 진행되었다.
코드는 다소 어지러울 수 있는 레거시지만 그래도 기능은 잘 동작하여 QA 진행간 크리티컬한 이슈를 한두개 발견한 것 빼고 나머지는 잘 동작하는 모습을 보여줬다. (알고보면 굉장히 잘만든 부분이 엄청 많다. 역시 레거시는 그 당시의 최선이기에 존중해야한다.)
약 7개의 이슈가 도출되었고 각 인원들이 적절히 작업을 pull 해가서 정해둔 기간 내로 이슈를 모두 해결할 수 있었다.
이 프로젝트도 조만간 배포할 예정이다. 그와 동시에 마이그레이션을 더 빠르게 진행시켜둬야겠다는 생각이 들고있는 요즘이다.
동아리 신규 교육인원들이 정규인원으로 전환되면서 프로젝트에 참여하는 시점이 점점 다가오고있다. 해당 인원들이 빠르게 적응할 수 있도록 협업 프로세스를 잘 만들어놔야한다는 계획 또한 잘 진행해봐야겠다.
여기는 고도화보다는 협업할 수 있는 환경을 만들어두는게 우선이라고 생각한다.
레거시 코드에서 미사용코드 및 DB 스키마를 제거하고 컨벤션을 맞춰두는 작업도 필요하다고 느끼는 요즘이다.
그러기 위해 마이그레이션을 진행하고 있는 것도 있지만.. (그 밖에도 최신 라이브러리 및 DB Driver 미지원 등의 이유가 있다.)
마이그레이션을 빠르게 배포해보는것 또한 병렬적으로 수행해야하는 과제이기도하다.
12월부터 시작하던 KOIN 마이그레이션이 위 두가지 프로젝트 작업으로 인해 코드레벨의 작업을 거의 진행하지 못했다.
마이그레이션 구성원들이 위 프로젝트에 집중해야해서 가용할 수 있는 인원이 없었던것도 한몫 했었다.
대신 작성된 코드를 돌아보면서 협의해야할 내용에 대해 discussion을 지속적으로 생성하는 시간을 가졌다.
1월동안 9개의 discussion을 생성했고 9개의 PR이 Merge되었다.
중간중간 쩝쩝박사, 코인 사장님기능 QA 등의 이벤트(?)로 인해 진척도를 많이 나가지 못했지만 2월에는 조금 속도를 내보려고한다.
2월을 위해 1월중으로 Swagger, 인증방식 개선 작업을 빠르게 완료해보자!! 🔥🔥🔥
MOA?
MOA 개인 맞춤형 선물을 펀딩받을 수 있는 서비스로 친구연동 기능, 펀딩 개설/참여 기능이 있다.
Focus에서 만난 루마가 사이드프로젝트에 백엔드 팀원을 구하고있어 말랑과 함께 참여했다.
기존에 작성된 레거시 코드가 있었지만 아직 클라이언트와 이어진 상황도 아니였을 뿐더러 코드에 대한 인수인계가 이뤄지지 않은 상황이였다.
약 1주일간 코드의 전반적인 흐름을 봤을 때 다시 만드는게 더 빠를것이라고 판단되어 말랑과 새로운 레포지토리에서 개발을 시작하게 되었다. (지금은 private Repo에서 작업중이며 배포 후 public으로 전환할 예정이다.)
프로젝트에 참여하면서 새로운 협업 툴을 경험해볼 수 있었다.
아틀라시안의 Jira, Confluence를 사용하게 되었는데 정말 괜찮은 툴인 것 같다.
스프린트 단위로 기획하고 github 이슈, PR과 연동도 되면서 문서 링크도 자유롭게 오가는 편의성이 꽤나 인상깊게 다가왔다.
또한 작업을 에픽이라는 단위로 지정하고 관리하면서 진척도를 명확하게 표시하는 관리방식은 추산한 일정을 잘 수행하고 있는지 가시적으로 확인하기 좋은 지표로 다가왔다.
스토리포인트에 대한 자세한 설명은 아래 글 참고
사용자 스토리 포인트로 스마트하게 프로젝트 진행하기(feat. LINE Pay 개발 팀)
나중에 동일한 환경으로 서버를 다시 구축해야하거나 구성 당시의 로그가 필요할 수 있기 때문에 인프라 구성명령어부터 문서화를 쭉 해뒀다. 말랑도 나도 문서화를 중요하게 생각해서 서로 보완해가며 문서화를 진행하고있다. 꽤나 가치있는 문서가 탄생하고있다. 👍
기존에는 cloudType이라는 서비스를 이용해 배포를 진행하고 있었고, CDN 플랫폼으로는 cloudinary라는 플랫폼을 이용하고있었다.
일정량 이상부터 과금 차이가 많이 나기 때문에 초기에 AWS 인프라 구조로 이관하는 작업을 진행했다.
AWS의 프리티어를 적극 활용하면서 ELB가 아닌 NGINX 설정으로 구성하여 비용이 0에 가까운 인프라환경을 구축할 수 있었다.
중간에 Vercel로 ns가 지정되어있는 설정도 바꿔가면서 배포환경 구성 A to Z를 다 경험해봤다.
Github Action을 이용한 Self-hosted runner 방식으로 docker를 곁들인 CI/CD 환경도 구축했다.
둘이서 페어로 작업하니 하루만에 인프라 환경을 다 구축할 수 있었다. 말랑 최고 🙌
기존에 개발되어있던 RestAPI 형태가 이상해서 API 명세를 변경해도 되는지 여쭤봤는데 루마가 흔쾌히 이해해주신 덕분에 깔끔한 구조로 다시 짤 수 있었다.
말랑이 엄청난 생산성으로 프로젝트 init을 해줬고, 로깅 전략, 예외처리, 코드 컨벤션 등을 빠르게 정하고 개발에 착수할 수 있었다. 서로 생각하는 방향에 대한 합이 너무 잘맞아서 프로젝트 진척도가 엄청 빨랐다.
1월동안 개발한 내용은 다음과 같다.
개발을 진행하면서 클라이언트가 1명인 관계로 모든 API에 대한 테스트를 맡기기가 인적 리소스가 많이 들어간다는 생각이 들었다.
이에 최소한의 테스트로 인수테스트는 작성하면서 기능을 개발하기로 했다.
2월중으로 배포하는것을 목표로 잡고있어 꽤나 타이트하게 개발을 진행해야할 것 같다.
MOA에 대한 자세한 정리는 2월달에 배포 이후에 진행하게 될 것 같다. 배포까지 달려봅시다 화이팅! 👏
원래라면 하나의 프로젝트를 하나의 게시글로 작성해야할 정도로 양이 많은데 하나씩 작성하려면 시간내기가 도통 어려워서 1월 회고를 작성하면서 있었던 일들을 쏟아내봤다.
위에서 이야기했듯이 2월달의 목표도 꽤나 많아서 2월 회고도 쓰지 않을까 싶다.
꾸준한 생활습관도 유지하면서 주어진 일들에 대한 우선순위를 잘 정리하고 더 많이 성장하는 2월이 될 수 있도록 노력해야겠다.
2024년 새해부터 일복이 쏟아지는걸 보니 올해는 뭔가 잘될거같다는 예감도 든다.
화이팅이다!
엄청난 생산성 준호씨......
다음달 회고도 기대할게욤 ㅎㅎ