2022 Masters Course/CS 10 Course

2022 마스터즈 코스(백엔드) 20일차 회고(2022. 1. 28.) - "지난 1월 되돌아 보기"

ikjo 2022. 1. 28. 17:24

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

 

수강 회고

벌써 2022년의 1월이 마무리가 되어가며 오늘로 마스터즈 코스 4주차 과정까지 마무리가 되었다. 항상 금요일에 회고를 작성할 때면 마음이 전보다(월요일~목요일) 훨씬 가볍다. 더욱이 오늘은 과정상 1달의 마지막 날이기 때문에 감회가 새롭다.

 

지난 한달을 되돌아 보면 개인적인 학습 성취도는 어느정도 만족하는 편이다. CS10 미션 과제를 해결하기 위해 삽질도 많이 했었지만 그 과정에서 배우는 것들이 정말 많았다. 문제를 제대로 이해하지 못해 삽질한 적도 많았지만 오히려 그 덕분에 개발 공부는 더욱 제대로 되었다....^^;;(이게 좋은건지 나쁜건지..) 아울러 과제를 수행하는 과정에서 최대한 객체지향적으로 프로그래밍하려고 노력했는데 코드스쿼드에 오기 전보다는 훨씬 성장했다는 것을 느낄 수 있었다. 무엇보다 내가 작성한 코드를 다른 수강생들이 작성한 코드들과 비교(그룹 리뷰 등)하면서 나의 코드의 문제점들을 파악하려고 노력했던 것이 많은 도움이 되었던 것 같다. 그래도 아직 많이 부족하기에 다음 2월달 과정에서도 더 분발하고자 한다.

 

마스터즈 코스의 과정은 주입식 교육을 최대한 자제하는 편이다. 개인적으로 나는 대학 시절에도 교수님 수업을 듣기 보다는 그냥 스스로 인터넷을 찾아보거나 전공 책으로 독학하는 편이어서 마스터즈 코스의 교육 과정이 잘 맞는 편이다. 그 과정에서 개인적으로 발견해낸 또한 팀원들이 공유해주신 다양한 자료들을 참고할 수 있었고 팀원들과의 질의 응답과 그룹 리뷰 시간들을 통해 내가 작성한 코드의 의도 등을 표현함으로써 나의 부족한 점들을 점검해볼 수 있었다. 앞으로 개발 공부를 함에 있어서도 코드스쿼드에서의 이러한 경험들이 도움이 많이 될 것이라고 생각된다.

 

아무쪼록 앞으로 남은 5개월이라는 마스터즈 코스 과정을 이번달 만큼만 해낸다면 분명히 2021년 보다 훨씬 성장한 개발자가 되어있으리라 믿는다. 하지만 과연 앞으로도 이번달 만큼 학습에 열중할 수 있을지 체력적인 부분이 많이 걱정 된다. 내일을 시작으로 무려 9일간의 설연휴 기간에는 2보 전진을 위한 1보 후퇴라는 생각으로 무엇보다 재충전의 시간을 가져야겠다는 생각이 들었다. 

 

이번 한 주는 나에게 있어 데드 포인트 같았고 컨디션이 매우 안 좋은 상태였기에 개인적으로 이번 소모임 활동에 많이 참여하지 못한 거 같아 소모임원들에게 죄송한 마음이다. 그럼에도 불구하고 소모임 교류의 활성화를 위해 노력해주셨었던 4주차 백엔드 클래스 3조 소모임원들 루이, Tany, 벅픽, Shine, BC, Nathan, Riako, Yan, 선을로 모두에게 진심으로 감사의 인사를 드리고 싶다.

 

 

학습 회고

  • 비동기 함수 관련 미션 과제 풀이 및 그룹 리뷰 등
    • Java 웹 백엔드 클래스 내 소모임원들과 zoom 회의실에서 학습

 

어제에 이어서 비동기 함수와 관련된 내용들을 좀 더 심층적으로 학습해보았다. 다음은 오늘 학습했었던 주요 내용들이다.

 

newCachedThreadPool과 newFixedThreadPool의 차이

newCachedThreadPool

newCachedThreadPool 스레드 풀은 이전에 만들어졌던 스레드 중 이용 가능한 스레드들을 이용하는 특징이 있다. 만일 기존 스레드들 중 이용 가능한 게 없다면 새로운 스레드를 만들어 풀에 추가시키고 60초 동안 사용되지 않은 스레드들은 제거되고 캐시로부터도 삭제된다.

 

이로써 오랫동안 사용되지 않으면 이 스레드 풀에서는 어느 리소스도 사용하지 않게 된다. 따라서 이 스레드 풀(Thread Pool)은 예측 가능한 수명이 짧은 비동기적인 작업들이 많을 때 프로그램의 성능을 개선할 수 있다. 반면에 처리하는 데 시간이 오래 걸리는 작업들이 많아지면 많은 스레드가 생성되어 CPU 가동율이 매우 증가하게 된다.

 

newFixedThreadPool

newFixedThreadPool 스레드 풀은 고정된 수의 스레드들을 이용하는 특징이 있다. 이 스레드 풀에 존재하는 대부분의 스레드들은 활성화 되있어 있는데, 어떤 추가 작업들이 주어졌을 때 모든 스레드들이 활성화된 상태라면 이용 가능한 스레드가 나올 때까지 해당 작업들은 작업 큐에서 대기 상태로 있는다.

 

만일 어느 스레드가 종료(shutdown)되기 전 어떠한 오류로 인해 제거된 경우에는 새로운 스레드가 생성되고 멈춰졌던 해당 작업을 연이어 실행 시키게 된다. 즉, 이 스레드 풀에 있는 스레드들은 종료(shutdown) 될 때까지 이 스레드 풀에 계속 존재할 것이다. 이 스레드 풀은 리소스 관리를 목적으로 동시 작업 수를 제한하려는 경우에는 적합하지만 작업량들이 급격하게 많아질 때는 대응하기 어려우며, 오랫동안 이용되지 않으면(작업이 없으면) CPU 가동율이 매우 낮게 된다. 

 

※ 참고 : 스레드 풀에 있는 스레드들은 기본적으로 데몬 스레드가 아니다.

 

thenApply와 thenCompose의 차이

thenApply와 thenCompose는 공통적으로 supplyAsync()의 작업으로 생긴 결과를 가지고 또 다른 작업을 수행하도록 구현할 수 있는 공통점이 있다.

 

하지만 thenApplay 메서드는 동기적인 함수의 Lambda을 이용한 작업을 수행하는 반면, thenCompose 메서드는 반환값을 CompletableFutrue로 가지는 비동기적 함수의 Lambda을 이용한 작업을 수행한다.

 

 

좋았던 점

  • 데드 포인트 같았던 이번 한주 동안 포기하지 않고 학습에 임했었고 것 그리고 꾸준히 회고글도 작성했었기에 만족스러웠던 한 주였다.

 

 

아쉬웠던 점

  • 이번 한주를 되돌아 보았을 때 소모임 활동에 많이 참여하지 못한 것 같아 소모임원들에게 죄송한 마음이 들었다.