2 minute read

요즘 하고 있는 공부 + 실무에서 하고 있는 것

워낙 여러가지를 공부하고 있긴 하지만 큰 줄기만 놓고 보면..

1. 서블릿 + JSP를 활용한 웹 어플리케이션 개발 + MVC 패턴 깊이 이해해보기

공부를 해서 실무에 적용하고 있다. 이번에 SSO 연동 개발을 단독으로 맡아 진행하면서 자바 웹 애플리케이션과 MVC 구조에 대해 처음으로 제대로 공부하였다. 그동안에는 간단한 비즈니스 로직 수정을 수정하고 배치 프로그램만 만들어봤던터라 솔직히 전체 구조를 몰라도 결과물을 만들어낼 수 있었다. 하지만 이번에는 영향도가 매우 클 수 있는 SSO 로그인 연동 개발을 하다보니 현재 우리 서비스 구조에 대해 제대로 이해하고 있어야만 하였다. 현재 프로젝트 구조는 어떻게 되었는지, 이 구조 하에서 우리 프레임워크는 어떻게 기능하고 있는 것인지, 지금 기존 로그인은 어떻게 이루어지고 있고 세션은 어떻게 괸리가 되고 있는지, 프로그램 권한 관리는 어떻게 되고 있는지 등을 파악해야하만 했다. 처음엔 서블릿을 몰라 왜 main 메소드가 없는데 프로그램이 동작하지? 이 프로그램은 대체 어디서 시작하는거지? 큰 혼동에 빠졌었다.

우리 서비스는 자체 프레임워크를 통해 개발되었는데 스프링과 다른 점이 많았다.(물론 내가 스프링을 잘 알고 있는 상태도 아니었다). 서블릿으로 직접 개발을 하진 않았지만, 서블릿을 이해하지 못하고는 프로젝트를 이해할 수도 없었고 개발할 수도 없었다. 그리고 제공받은 샘플 코드가 JSP로 되어있어서, 서블릿과 JSP를 열심히 공부하고 집에서도 토이 플젝을 해보고, 이걸 이용해서 실무에 적용해보았다. 이 프로젝트 덕분에 짧은 시간안에 많은 성장을 이루었다고 생각한다.

하지만 반성했던 부분도 있었는데, 그간 열심히 공부하고 강의도 보고 책도 보았지만 실제로 실무에서 개발하려고 하니까 손이 나가지 않았다. 간단한 로그인 폼 만들어서 처리하는 것도 머리로는 알겠는데 헤매는 나를 보면서 개발자로의 야생성을 많이 길러야겠구나 생각했다. 어쩌면 취준할 때보다, 싸피할 때보다 개발실력은 더 퇴보하였을지도 모른다..

주로 활용하였던 컨텐츠는

  1. 구멍가게코딩단의 자바 웹 개발 워크북 중 스프링 내용 이전까지
  2. 유튜브 채널 뉴렉처의 서블릿 + JSP, JDBC

2. 스프링 부트 + JPA

현재 실무에서는 자체 프레임워크를 쓰고 DAO에 직접 쿼리 작성해서 JDBC로 쿼리 실행을 하고 있다. 스프링, 스프링부트, JPA, ORM에 대한 것들을 공부하면서 현재 내 실무 환경이 어떤 부분에서 단점이 있고 다른 회사에서는 왜 저런 기술을 사용하고 있는지 체득할 필요가 있었다. 그래서 닥치는대로 공부하고 틈나는대로 유튜브 영상들을 보는 중이다. 주로 활용하고 있는 컨텐츠는

  1. 김영한님의 JPA 기본편 강의를 정리한 블로그들..
  2. 최범균님의 JPA 기초 강의
  3. 김영한님의 JPA 활용편 1
  4. 유튜브 메타코딩 채널의 스프링부트 개념 강의

전체 내용 한 번 쭉 훑어보고 실제 맨땅에서 개발을 진행해보려고 한다. 뭘 만들어볼지는 고민중인데 싸피 때 Django로 만들었던 영화 커뮤니티 웹서비스를 스프링부트 + JPA + webflux로 만들어보거나 블로그 서비스를 만들어볼까 한다.

3. 객체지향 프로그래밍과 디자인 패턴

학교다닐 때와 싸피 교육들을 때도 계속 접했던 두 가지이지만 이번에 스프링 공부하면서 내가 이걸 과연 알고 있는게 맞는가란 생각이 들었다. 애초에 이건 마스터란게 없는 것 같고 꾸준히 공부하면서 실무에도 활용해야겠다. 주로 활용하였던 컨텐츠는

  1. 유튜브 코드없는프로그래밍 채널의 디자인 패턴, 객체지향 프로그래밍 강의
  2. 책 스프링 입문을 위한 자바 객체 지향의 원리와 이해 <- 특히 이 책은 정말 만족도가 높았음!

앞으로 공부하고 실무에 적용하려고 하는 것

1. JUnit

회사에서 JUnit 쓰는 사람을 한 명도 못 봤다. 우리는 개발하면 단위테스트를 진행할 때 기능 테스트만 한다. 스샷찍기 바쁘다. 처음엔 원래 실무에서는 이렇게 하는구나 했는데 다른 회사에서는 다 테스트 코드 작성하더라… 그래서 JUnit을 이용한 테스트 코드 작성법에 대해 공부하고 이걸 회사에서 써먹어보려고 한다. 욕먹어도 해보려고 한다. 사내 스터디를 열던지 해서 회사에 적극 전파해봐야지…

2. JAVA8

2014년에 나온 JAVA8을 걽핥기식으로 공부하긴 했지만 숙련도가 매우 떨어진다. 그도 그럴 것이 우리 회사는 자바 1.6을 사용한다.. 2024년에 재구축이 예정되어 있는데 그때 JDK 1.8로 올린다고 하니 미리미리 JAVA8 숙련도를 높여야겠다.

3. 이펙티브 자바, 코드 컴플리트

이번에도 내가 코드를 개떡같이 짠다는 느낌을 받았다. 기존 레거시 코드를 분석할 때도 코드를 왜이렇게 짰지.. 뭔가 이상하고 불편한게 있는데 뭐가 이상한지는 찝어낼 수 없었다. 무엇이 좋은 코드인지 알기 위해 두 책을 읽어봐야겠다.

4. GRADLE

현재 실무에서 Ant, Gradle, Maven 모두 사용하지 않는다. 의존성 관리가 안되고 있다. 빌드/배포를 전담부서에서 맡아서 하고 있는데 솔직히 어떤 과정으로 빌드/배포가 진행되고 있는건지 모르겠다. 이 과정들이 궁금하고 앞으로 어디서 활용될지 모르기 때문에 미리 공부하려고 한다.