2022 Masters Course/Web Backend Course

2022 마스터즈 코스(백엔드) 46일차 회고(2022. 3. 14.) - "프로그래밍 학습도 중요하지만 운동도 중요하다."

ikjo 2022. 3. 15. 00:21

해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)

 

수강 회고

오늘은 마스터즈 코스 과정 10주차가 시작되는 날이다. 지난 9주간의 마스터즈 코스 과정 동안 정말 하루하루 정신 없이 보냈었고 일주일도 금방금방 지나갔었다. 그 과정에서 지식적으로도 많은 것을 학습할 수 있었을 뿐만 아니라 경험적으로도 많은 것을 배울 수 있었다. 아무쪼록 확실히 코드스쿼드에 오기 전보다는 훨씬 성장했다는 것을 느낄 수 있었다. (이래서 부트(?) 캠프라고 하는 것 같다. 🤣)

 

다만, 마스터즈 코스 과정을 하면서 가장 아쉬웠던(부족했던) 것은 "운동 부족"이다. 코드스쿼드에 오기 전 월평균 운동 횟수(30분 이상)는 그래도 15~20회 정도는 되었다. 하지만 올해, 즉 마스터즈 코스 과정을 시작하면서 월평균 운동 횟수는 대략 5~10회 정도로 급격히 감소하였다. 심할 때는 일주일(평일간) 동안 밖에 안나갔었던 적도 있었던 것 같다.

 

지금이야 다소(?) 젊은 나이기에 당장 느끼진 못하겠지만 운동을 안 하고 이렇게 프로그래밍 학습만 하는 것은 나의 건강에 대해 일종의 "부채"를 지는 것과 같다고 생각한다. 당뇨, 고혈압 등 여러 질병들은 젊었을 때부터 차곡차곡 쌓이게 되는 것이라고 한다. 이외에도 목, 허리 등 자세 문제나 근육 감소 문제들 역시 나중에 시간이 흘러 나에게 커다란 짐이 될거라고 생각이 들었다.

 

아울러 일반적인 회사 취업 준비(공무원 시험, NCS 시험 등)와 같이 프로그래밍 학습은 1~2년 반짝하고 그만하는 것이 아니다. 사실상 취업을 하게 되면 바쁘면 더 바빠지지 한결 여유있어지진 않을 것 같다. 즉, 프로그래밍은 꾸준히 오래 하는 것이 중요하다. 이를 위해서는 오버 페이스를 하며 건강을 해치면서까지 프로그래밍을 하면 안된다는 생각이 들었고 오늘부터라도 자기 전 가벼운 운동이라도 꼭 하고 자야겠다는 생각이 들었다.

 

 

학습 회고

  • 스프링 부트 관련 미션 과제 풀이
    • Java 웹 백엔드 클래스 내 소모임원과 zoom 회의실에서 학습

 

오늘로 벌써 스프링 부트 미션 과제 3주차 기간에 들어섰다. 스프링 부트 미션을 하면서 로거 기능에 대해 관습적으로 사용하고 있었는데, 이번에 리뷰어로부터 관련하여 피드백을 받아 로그 레벨 등 로그에 대한 학습을 새롭게 해볼 수 있었다. 이번에 학습했던 주요 내용으로는 다음과 같다.

 

로그 레벨 INFO란?

나는 당초 다음과 같이 컨트롤러 단에서 사용자 요청을 입력받으면 HTTP API 메서드나 URL 그리고 파라미터 값들을 info 레벨 수준으로 로깅해주고 있었다. 

 

@Controller
public class UserController {

	private Logger logger = LoggerFactory.getLogger(UserController.class);

    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/users")
    public String getUserList(Model model) {
        logger.info("GET /users");
        model.addAttribute("users", userService.findAll());

        return "/user/list";
    }
}

 

그러나, 관습적으로 info 레벨 수준으로 사용하고 있었지, 이 info 레벨로 로깅하는 것이 어떤 것을 의미하는지는 모르고 있었다. info 레벨과 관련하여 알아보던 중 내가 사용하는 스프링 부트 앱을 처음 기동할 때 콘솔 창에 여러 로그 기록들이 나오는 것을 확인할 수 있었는데, 해당 내용을 살펴보비 톰캣, 서블릿, 데이터 베이스 등 웹 애플리케이션의 초기화 동작에 관한 내용이 주를 이루었다.

 

info 레벨 수준으로 로그되는 기록들은 주로 "서비스의 시작, 구성, 중지 등 애플리케이션의 진행 과정(the progress of the application)을 강조하기 위해 사용된다고한다. 이러한 점을 고려했을 때 과연 HTTP API, URL 등 사용자 요청 관련 정보를 INFO 레벨로 로깅하는 것이 올바른 것인지 의문이 들었다.

 

아울러, 컨트롤러에서 이러한 사용자의 요청들을 로깅하는 것이 과연 컨트롤러의 역할과 책임이 명확한 것인지 의문이 들었다. 이와 관련해서 학습하는 중 "인터셉터(Interceptor)"라는 개념을 알 수 있었다. 여기서 인터셉터란 Dispatcher servlet에서 Handler(Controller)로 요청을 보낼 때, Handler에서 Dispathcer servlet으로 응답을 보낼 때 동작하는 것으로 컨트롤러 실행 전과 실행된 후에 공통된 처리를 할 수 있도록 도와주는 역할을 한다.

 

즉, 인터셉터를 이용하면 컨트롤러의 시작과 종료 시에 사용자 요청 및 응답과 관련한 로그를 남길 수 있겠다는 생각이 들었다. 이를 통해 컨트롤러 단의 역할과 책임도 보다 명확해지는 장점이 있을 것 같아 추후에 이를 활용하면 좋을 것 같다는 생각이 들었다.

 

이외에도 인터셉터는 로그인 유저를 대상으로 맞춤형 응답을 주는 용도로도 쓰인다고 한다. 예를 들어 "로그인한 유저에게만 특정 페이지가 보이도록" 하게끔 하기 위해 인터셉터에 로그인 확인 로직을 추가한다면 로그인 유저를 체크한 후 컨트롤러에 요청을 보낼 수 있는 것이다. 즉, 컨트롤러 핸들러 메서드가 무거워지는 것을 방지할 수도 있는 것이다.

 

 

좋았던 점

  • 다음주부터 2주간 웹 코스 마지막 미션은 페어 프로그래밍으로 진행되고 그 이후로는 FE, BE, 모바일간 프로젝트 협업으로 과정이 진행되기 때문에 사실상 이번주가 백엔드 클래스 수강생들간의 마지막 소모임 활동이 될 것 같습니다. 그런데 운이 좋게도 굉장히 반가웠던 얼굴들이 많이 보였고 지금까지 한 번도 뵙지 못한 수강생분도 뵐 수 있어서 좋은 에너지를 얻을 수 있었습니다.

 

 

아쉬웠던 점

  • 오늘 어떤 알고리즘 문제를 풀다가 막히는 부분이 있어 오랜 시간을 소비했는데, 어느 정도 시간이 지나면 이를 끊어낼 줄 알아야하는데 그러지 못하고 마스터즈 코스 과정 학습에 소홀히 하게 되었습니다. 😥

 

 

이전 보다 개선되었던 점

  • 오늘은 특별히 이전 보다 개선되었다는 점은 느끼지 못했습니다. 다만 원래 정신 없이 하루를 보내다보면 식사를 거를 때가 많았는데 그래도 오늘 하루도 바쁘게 보냈지만 식사 시간은 규칙적으로 지킬 수 있었습니다. (민망 🤣)