회고
회사에 들어온지는 좀 됬는데 입사하고 나서 제일 중요했던 일정 하나가 저번달에 마무리 되었다.
정부과제 평가였는데 평가 하루 전날까지 애매한 기능을 손 보느라 재배포 하는 과정을 수없이 반복했다. (Jenkins를 써보고 싶었으나 그 때는 t2.micro 계정이라 Jenkins 쓸 여건이 나진 않았다. 근데 지금 클라우드 리소스는 넉넉함) 해당 업무는 처음 써보는 라이브러리와 처음 해보는 업무 도메인이다.
Back 단에는 그렇게 많은 코드가 필요하진 않았고 Front단 기능 동작 부분에서 많은 시간을 할애하였다. 클라이언트 단에서 UI 디자인 쪽은 딱히 내가 관여한 것은 없으나 화면단 인터페이스 정의와 기능 동작이 굉장히 중요했다.
프로젝트 자체는 전임자에게 받아서 진행하는 상태이고 같이 하는 분도 계시고 기획도 이미 정해져 있어서 그렇게 업무 강도는 빡쌔진 않았다. 빡새게 하려고 작정했으면 더 많은 기능을 넣을 순 있었겠지만 굳이 그렇게 하지 않아도 됬다.
기능을 구현하는 것도 고통이지만 어떻게 구현할지 계획하고 무슨 라이브러리나 어떤 기술을 쓸 것인지 상급자와 협의하는 것도 중요했다. 구현없이 뜬구름 잡는 계획으로만 구성된 ppt 보다는 기능 구현을 해보고 어느정도 윤곽을 보여주는 것을 좋아했다.
단순히 기능만 돌아가는 것만 중요한 것이 아니었다. 이 기능을 논리적으로 어떻게 동작시킬지 정의하는 것도 굉장히 골치아픈 문제였다. 회사에 기획자 분이 계시긴 하는데 그 당시에는 없었다.
그래서 테스트 시나리오 라는 것을 만들었다. 해당 업무 도메인에서 이 소프트웨어 사용시에 어떠한 방식으로 사용할 것인가를 다룬 UseCase 문서 느낌인데 나름 기능에 대한 정리가 잘되고 그걸 보면서 내 기능이나 UI도 수정하고 또한 남들에게 제시할만한 좋은 문서가 된다.
평가는 잘끝났다. 좋은 평을 받긴 했는데 많이 그래도 부족하다고는 생각한다.
새로 구상하는 것을 위해 이제 또 다른 일정을 시작했다. 가능성을 일단 계속 구상하고 길을 만들어 가야 하는데 업무 영역이 매우 넓어서 쉽게 트라이가 되진 않는다. 또한 기술적으로 "이제 왜 안되? 그냥 하면 되나?"하고 로직을 만들려고 하면 또 다른게 걸리는게 많다. 그래서 요즘 대부분의 시간을 공부하면서 어떻게 하면 되게 할지의 방향을 잡는데 많은 시간을 보낸다.
잡생각들
기록
Notion에다가 다시 기록을 시작했다. 원래 강의 들었던 것을 word에 기록했는데 365 기한이 끝나버려서 Notion에다가 땜빵으로 쓰고 있었는데 계속 쓰다보니 워드보다 좋았다.. 특히 Backup 기능이 있어서 삭제한 파일 복구가 가능한게 인상 깊었다. 지금은 물론 회사 ms365 계정을 받았지만 ppt 만드는거 아니라면 거의 Notion에서 주로 공부했던 것을 기록한다.
InteliJ
무겁고 불편한 sts에서 벗어나서 InteliJ ultimate 버전을 사용하기 시작했다. 다양한 플러그 인과 툴 자체도 덜 무거워서 갑자기 sts처럼 팅기는 일이 없어졌다. 작업하는 것에 있어서 많이 쾌적해졌다. 최대한 다양한 기능을 써서 기록해서 정리할 예정이다.
S/W 아키텍처
최근 프로젝트 하나를 새로 만들 일이 생겨서 이전에 패키지 구조를 고민하다가 스프링 코드에 관련해서 아키텍처에 대한 유튜브 강의를 많이 보게 되었다. 일반적으로 우리가 많이 사용하는 레이어 아키택처와 도메인 별로 나누는 도메인 아키텍처, 그리고 요즘 유행하는 클린 아키텍처 등에 대해서 공부하였다. 사실 이걸 공부하게 된 이유도 어떤 시니어 개발자분이 프로젝트를 클린 아키텍처로 새로 만드는 것을 유튜브로 보고 난 후 였는데 공부를 하고나니 이것을 굳이 쓸 이유가 없다는 것으로 결론이 내려졌다. 내 프로젝트와는 맞지 않았다.
TDD/Rest Docs
남들과 협업을 한다거나 문서로 기능 명세서를 남겨야 하는 상황이 많다. 기존에 몇몇 프로젝트는 그러한 명세를 엑셀에다가 일일히 수작업으로 했었다. 하지만 이러한 수작업으로 기록하는 것도 만약에 코드가 변경되면 그것에 맞추어 문서도 수작업으로 따라서 변경해야하는 단점이 있다. 그러한 상황을 위해 실무에서는 Rest Docs나 Swagger를 많이 쓴다고 한다. API 문서 자동화 라이브러리인데 API 명세를 코드가 자동으로 만들어주는 것으로 웹페이지가 자동으로 만들어지고 그것을 보면서 협업을 한다는 그림이었다. Swagger와 Rest docs 이 두개가 많이 알려졌지만 동작 난이도는 Swagger가 낮으나 배포코드가 지저분해진다는 단점으로 Rest docs를 많이 쓴다고 한다. Rest docs의 단점이 있다면 테스트 코드 강제하는 형태로 되어 있어 나름 귀찮을 수도 있다는 것이다. 하지만 이 기회에 앞으로 TDD로 코드 짜는 습관을 익혀두면 좋을 수 있다. 그 전까지는 왜 TDD로 짜야 하는지에 대한 뚜렷한 명분이 없었으나 Rest Docs 를 위해서라면 나름 훌륭한 명분이 될 것이다.
Docker/Kubernetes/Kafka/Redis
나중가서는 꼭 알아야 하는 부분이다. 개발한 프로젝트에 dockerfile을 작성해서 환경울 구성해야 하고 docker Compose로 db와 다른 어플리케이션 단을 연결해야 한다. 쿠버네티스 쪽은 사내 프로젝트에 관련된 것을 하고 있어서 어떻게 돌리는지에 관한 것은 꼭 알아야 한다. Kafka도 주변에서 알아야 한다고 말은 해준다. 요즘 github에서 남들 프로젝트 하는거보면 죄다 Redis쓰는데 Kafka 비슷한거라고 검색하면 나오긴 하는데 왜 쓰는지는 나도 좀 알고 싶다.
강의를 열심히 듣자
8, 9, 10 월 달에는 강의를 많이 못들었는데 최근에는 과거에 등록해놓았던 인프런 강의를 하나씩 격파하려 하고 있다. 정말 배울 게 많다. 클라우드, 프론트, 백엔드, 인프라, CI/CD 등 ..