2021.05.26.
1.
첫 번째 다이어리를 쓴 지 6주 정도 지났다. 지난 6주간 많은 것 들을 공부했고, 또 더 많은 것들을 공부하고 싶어졌다. 이에 따라 뒤죽박죽 엉켜있는 내 머릿 속의 생각들을 글을 쓰며 정리할 필요가 느껴졌다. 따라서 오늘은 내가 6주동안 무엇을 했고, 공부 했는지, 앞으로 무엇을 공부하고 싶고, 공부에 대한 순서는 어떻게 정할 것인지, 또 4월의 나와 비교하여 얼마나 성장했는 지 등 내가 가진 생각을 정리하는 시간을 갖고자 한다.
2.
먼저 내가 6주간 해온 것들을 정리하자면, 회사의 작은 프로젝트 하나를 끝 마치고 배포하였다. 세션 기반의 로그인 인증 구현, 유저 권한과 관리자 권한의 분리, SMTP 를 이용한 이메일 인증, 프로필 수정, 공지사항 및 1:1 문의 기능을 구현해보았다. 구현한 기능들에 대하여 SpringbootTest 를 진행하였고, Jacoco 라이브러리를 활용하여 커버리지 측정을 하였다. 그리고 EC2, RDS 를 이용하여 수동으로 배포하였다. 지금와서 생각해보면 기능 구현에 급급했고, 클래스와 패키지 간의 의존성이 뒤죽박죽 엉켜있어 확장성, 가독성이 떨어지고 불필요한 코드 중복 또한 많았다. 따라서 대대적인 수정을 해야하지만, 스타트업이다보니 기획이 수시로 바뀌어 내가 개발한 프로젝트의 웹 애플리케이션은 당분간은 사용하지 않기로 결정났다.
그 다음 프로젝트는 회사의 주요 홈페이지를 Java, Spring boot 로 다시 구축하는 프로젝트이다. 회사 초기 외주를 맡긴 홈페이지인데, 기획과 서비스가 수정됨에 따라 매 번 외주업체와 컨택하여 수정해야 하니 많은 인적, 물적 비용을 초래했다. 따라서 데이터베이스 설계부터 다시 새로 구축하기로 결정났다. 6월 중순부터 본격적으로 시작할 예정인데, 나의 역할은 Spring boot 를 이용한 서버 구축 전체이다. 6월 중순까지는 다행히 서버 구축을 제대로 할만한 역량을 갖추기 위해 공부할 시간이 주어졌다.
첫 번째로, JPA, Hibernate 에 대해 확실하게 이해하고 사용하기 위해 김영한 님의 JPA 인프런 강의 로드맵 전체를 수강하였고, 중요하고 필요하다고 생각되는 부분들에 대하여 정리하였다. JPA 의 전반적인 이해 뿐 아니라 실무 팁도 많이 제공해주셔서 정말 유용하고 돈이 전혀 아깝지 않은 명강의였다. 조만간 전체를 한 번 더 돌려볼 생각이다.
그리고 두 번째로, 서버 아키텍처를 제대로 설계하기 위해 Native Cloud Application, Microservice Archiecture, Monolith Architecture 에 대하여 공부하였다. 또한 우아한 테크 코스의 세미나를 몇 개 정도 시청했는데, 우아한 테크 코스 조영호 님의 우아한 객체 지향을 보고 객체 지향에 대한 깊은 울림을 받았다. 울림을 받음과 동시에 많은 것들을 깨달았고, 짧지만 내가 여태 해온 Spring boot 를 이용한 서버 개발의 확장성, 유연성, 효율성에 대한 성찰을 하게되었다. 토비의 스프링에서 토비님이 스프링에서 가장 중요한 것은 "객체지향" 과 "테스트" 라고 한 문장이 있었는데, 그 문장이 비로소 이해가 가는 순간이였다. 새로운 프로젝트에서는 Modular Monolith 및 도메인 모델 패턴을 적용해볼 생각이다. 어렵고 복잡한 개념이기에 더 자세하게 공부하기 위하여 조영호 님의 "객체지향의 사실과 오해" 와 최범균님의 "DDD START!" 첵을 구매하였고, 글을 쓰고있는 오늘 도착하였다. 내일부터 열심히 읽으며 정리해볼 생각이다.
세 번째로, 프론트엔드 개발자와의 원활한 협업 및 제안을 위해 CSL, SSL, Isomorphic App, SSG 등에 대하여 공부하였다. 프론트 측과 잘 상의하여 각각의 장, 단점을 분석하고, 현 회사 프로젝트의 성격에 맞는 렌더링 방식을 잘 선택하고 협업하기 위해 노력할 것이다.
앞으로, 6월 중순까지 2~3주 정도의 시간이 있다. "객체지향의 사실과 오해", "DDD START!" 를 정독하여 도메인 모델 패턴, 객체지향 의존성 관리에 대해 제대로 공부하고, 정리할 것이다. 또한 실제로 적용해보고 연습하기 위해 사이드 프로젝트로 진행하고 있는 유학생 중고거래 앱 서비스 구축 프로젝트의 내가 짠 코드를 모두 갈아엎고 도메인, 요구사항 분석부터 내가 공부한 것들을 코드 단으로 녹여내는 과정까지 다시 진행해볼 생각이다.
3.
회사와 관계 없이 사이트 팀 프로젝트로 진행하고 있는 유학생 중고거래 서비스 또한 어느정도 진행하였다. 본인 인증을 위해 문자 SMS 인증을 선택하였고, 유학생 타켓 애플리케이션이다보니 번역 모듈 또한 필요하였다. 따라서 NCP 에서 제공하는 SENS SMS API 와 PAPAGO API 를 이용하여 문자 인증 모듈과 번역 모듈을 구현하였는데, API 를 요청하고 응답을 받는 과정에서 메소드 구현, 모듈 설계를 하는 데에 불편함을 느꼈고, 접근성 및 명확성이 떨어지는 것 같다고 생각 하였다. 이에 따라 NCP 에서 제공하는 많은 API 에 대한 요청 및 응답을 한 번 더 메소드화 ( sendSMS(), translation() ) 시켜서 오픈 소스로 배포를 한다면 나 뿐만 아니라 다른 사람들이 더욱 편하게 사용할 수 있을 것 같다고 생각하였고, 현재 진행중에 있다. 문자 인증, 번역에 대한 메소드 구현은 어느 정도 완성되었고, 테스트도 완료하였다. 하지만 편하게 구현하기 위해 Spring 에서 제공하는 RestTemplete 을 사용하는 실수를 범했고, 모듈의 무게를 가볍게 하기 위해 Spring 대신 퓨어 Java 의 HttpURLConnection 로 변경하는 과정을 거친 뒤, 다시 테스트해보고 오픈 소스로 배포할 계획중에 있다.
5.21 ~ 5.23 기간 동안은 JunctionX Hackaton 에 팀으로 참여했다. 웹 서핑 중 우연치않게 해커톤이 개최되는 것을 알아냈고, "기획자, 디자이너, 개발자가 어울리는 축제" 라는 타이틀에 반해 주변 친구들을 불러모아 서둘러 지원했고, 운이 좋게 참여할 수 있게 되었다. 2박 3일간 모두 같이 한 마음으로 기획하고, 디자인하고 개발하는 새로운 경험이였다. 이번 해커톤을 통해 배운 것은 기획자, 디자이너와 같은 비 개발업무와의 소통 및 협업, 그리고 내가 Git 을 너무 모른다는 것이다. 친구에게 속성으로 git rebase, 그래프, 이슈 처리 등에 대하여 배우고 개발을 진행하긴 했지만, 너무 어려웠다. 그 동안 귀찮다고 미뤄왔던 Git 에 대해 제대로 공부해야겠다는 다짐을 하였다. 아쉽게도 수상하지는 못하였지만 좋은 친구들과 좋은 경험을 하였고, 나에게 다시금 동기부여가 됐던 소중한 시간이였다.
4.
6주 전의 나와 비교했을 때, 가장 크게 바뀐 것은 이젠 "공부에 대한 순서" 를 정할 수 있다는 것이다. 6주 전의 나는 공부하고 싶은 것들을 나열하기 급급했고, 순서를 정하지 못했기에 혼란스러웠고 갈팡 질팡했다. 하지만 지금은 어느정도 순서를 정하는 기준을 세웠다. "나에게 지금 당장 필요한 기술부터 차근 차근" 이다. 좋은 기술이라고 해서 무조건 급급하게 공부하려 하지말고 지금 내 수준에서 가장 필요한 기술부터 차근차근 공부하다보면, 언젠가 좋은 기술이라고 칭송받는, 아직 지금의 나에겐 과분하고 멀리 떨어져 있는 기술을 공부할 때가 올 것이라고 생각했다. 이러한 기준을 세우니 공부하고 싶은 것들에 대한 순서를 매길 수 있게 되었고, 더욱 집중할 수 있게 되었다.
기초부터 차근 차근, 확실하게, 훗날 쿠버네티스 고수가 될 때까지 ...!!!!!
5.
마무리하며, 앞르로 내가 읽고 싶은 책, 해야 하는 것, 하고 싶은 것들을 생각나는 대로 나열하고자 한다.
읽고 싶은 책
- 객체 지향의 사실과 오해 - 조영호 ( 구매 완료 )
- DDD Start! - 최범균 ( 읽는 중 )
- 토비의 스프링 - 이일민 ( 1권 읽는 중 )
- 자바 ORM 표준 JPA 프로그래밍 - 김영한
- effective java - 조슈아 블로크
- 리팩터링 - 마틴 파울러
- 도메인 주도 설계 - 에릭 에반스
———————————————————————————————
해야 하는 것
- 영어 점수 ( 6월 내로 )
- 코딩 테스트 공부 꾸준히
———————————————————————————————
하고 싶은 것
- AWS - SAA - 02 자격증 ( 8월 내로 )
- Java 8
- Git
- Spring batch
'Diary' 카테고리의 다른 글
| 2021.08.16. (0) | 2021.11.04 |
|---|---|
| 2021.04.13. (0) | 2021.11.02 |