스낵커 개발 회고

아이스__아메리·2023년 7월 18일

회고

목록 보기
1/2

입사를 하고 신규 프로젝트를 시작하게 되었다. 언어선택부터 모든 결정을 신입 개발자인 내가 주도했다. 이전 회사는 할당되는 부분만 개발하면 되었었기에 자유도가 높은 세계에서의 시작은 꽤나 낭만이었다.

모든 것이 새롭다

Java 17


LTS 버전중에 8, 11, 17 중에 8버전은 가장 오랜기간 지원하지만 새로운 코드들에 대하여 호환성이 낮을거 같고 11버전은 가장 짧은 지원이라 17버전은 8버전보다 지원기간이 크게 차이나지 않았고 개선된 함수사용과 추후 버전 호환성을 고려하여 채택했다.

Docker를 통한 개발 환경 구축

이전 프로젝트에서 그대로 가져온 기술 중 하나이다. 입사 전부터 매력적인 기술스택이라서 공부한 것이 도움이 되었다.
초기 로컬 테스트 환경에서 빠르게 사용할 수 있다는 장점이 있고 쿼리문을 따로 관리하지 않아도 된다.
운영 환경에서는 버전관리가 쉽다는 장점이 있었다.

JPA의 생산성

이전에서 데이터베이스 중심의 개발을 하다보니 제일 부딪혔던 부분이다. N+1문제가 자주 발생했고 논리적으로만이 아니라 물리적으로도 연관 관계를 만들다 보니 처음에는 굉장히 거부감이 들었지만 익숙해 질수록 생산성이 이를 압도했다.
객체지향적 프로그래밍을 하기 위해 QueryDSL도 적용하면서 내 것으로 만들려고 열심히 노력했다.

MySql

새로운 것 중에 가장 잘 아는 것이다. 이전 회사에서 Oracle로 수많은 쿼리문을 작성하다보니 쿼리문만큼은 같은 연차에서 뒤지지않을 만큼 자신이 있었다. MySql과 큰 문법차이가 없고 JPA나 QueryDsl를 이용하게 되면 단순한 함수들 밖에 사용하지 못한다. 그래서 JPQL로 트레이드오프하여 개발 용이성을 높였다. 운영 배포이후 다양한 쿼리문으로 오류를 수정하였다.

Redis

JWT를 이용한 토큰 기반 세션 인증 방식의 서버였고 토큰은 Redis에 저장되는 구조로 개발을 했다. 단일 서버로 간단하게 저장하는 용도로 였기 때문에 기본만 사용했다. 추가 확장 가능성을 Clustering, Master-Slave 등 공부하여 준비했다.

Batch

이전 프로젝트에서 그대로 가져왔는데 기술블로그들을 찾아보니 Schduler에 로직만 추가한 구조였다. Batch를 제대로 돌렸을 때 생성된 테이블 9개가 생성되고 나서야 잘못됨을 알게 되었다. 그래서 간단한 작업은 Reader - Processor - Writer로 작업하고 복잡한 로직은 tasklet 형식의 전환 작업을 진행했다.

AWS

클라우드 서비스의 편의성과 비용부담이 크지 않아서 마음껏 사용했다. 프리티어 서버를 이용하여 운영 적용 전 많은 연습을 할 수 있어서 좋았다.

Junit

테스트 코드를 작성에 있어서 무엇을 테스트 할 것인 가를 많이 생각했지만 자주 바뀌는 기획에 대응으로 인해 자주 수정해야하니 부담이 가서 운영 단계 이후 적용하는 것으로 바꿨다.

그 외에는 짧아서 생략

Open API, RabbitMQ, JIB, GitHub Action 등이 있다.

후기

새로운 것들이 하나하나 내 것이 되면서 재미가 있었다.
로직을 구상은 바로 되는 편이었으나 꼼꼼함이 부족했던 것 같다. 중심이 부족하다는 것을 채우기 위해 책을 사서 읽었는데 꽤나 큰 도움이 됐다.
운영 이 후, 부족한 부분들이 더 보였었는데 그 부분들을 보완하면서 자연스럽게 리팩토링에 대한 공부도 했다.

profile
츠케멘 좋아

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

많은 도움이 되었습니다, 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

많은 도움이 되었습니다, 감사합니다.

답글 달기