4월 1주차에 자바의 정석을 다 보기로 했지만, 생각보다 쓰레드, Lambda, Stream에서 많은 시간이 할애되었다.
하지만 Stream의 동작방식에 이어, Optional의 구조와 함수형 인터페이스의 종류를 알고 나니, 어떻게 사용해야할지에 대해서 감이 잡히게 되었고, Stream을 사용하는 방식에 대해서 감이 잡히기 시작했다.
그러나 partitioningBy, groupingBy 는 너무 어려웠다. 어느 상황에 써야 될지는 알겠지만, collectingThen을 사용해서 반환 타입을 달리 바꾸어 collect하는 과정이 눈에 익숙해지진 않았다.
Thread 파트에서는 지금 하고 있는 CS 면접 스터디가 많은 도움이 되었다. 아마, 운영체제적으로 Thread가 어떻게 동작하는지에 대해서, 이해하지 못했다면 Thread 파트에서도 긴 시간을 할애했을 것 같다. 특히 실행만 하는 함수형 인터페이스인 Runnable에 대해서, 인지하고 있지 못했다면 이 또한 학습하는데 더 장애가 있었을 것으로 생각된다.
이렇게 공부한 것에 대해서 적어나가다 보니, 확실히 이전의 나보다 성장한 모습이 느껴진다.
최근에 공부하면서 가장 뿌듯하다고 생각하는건, 운영체제의 지식의 부족으로 인해 CS 스터디에서 열심히 공부했는데, 해당 과정으로 인해서 왜 라는 질문을 할 때, 논리적으로 유추할 수 있게 됐다는 것이 가장 큰 부분인 것 같다.
자바의 정석이 끝난 이후 기존에 병행하던 인프런의 DB 핵심원리 2 를 마무리하였다.
Mapper 방식과 ORM 방식의 장 단점에 대한 이해와 그 도구들에 대해서 학습을 할 수 있었고, 그 중에서도 가장 인상 깊었던 부분은 스프링에서의 트랜잭션 동작 원리이다.
실제로 프로젝트를 진행하면서 @Transactional 이 적용된 코드에 같은 클래스의 @Transactional 이 적용된 메소드를 하나의 메소드에서 이어서 호출할 때, 적용이 되지 않는 것을 확인 할 수 있었는데, @Transactional 애노테이션의 AOP 동작방식때문인 것을 알고 정말 쇼크였다. 전파 방식의 REQUIRED와 REQUIRES_NEW의 사용 상황에 대한 사례에서도, 그러나 REQUIRES_NEW를 사용했을 때, 내부 트랜잭션의 진행 도중 외부 트랜잭션이 지연되는 문제에 대한 아키텍쳐 개선방안도 너무 신기하고 재밌게 학습을 했다.
지금 떠오르는 건 기존의 SMTP를 사용한 코드에서 메일을 보내는데, 많은 시간이 할애가 되었는데,
자바에서 MOM(Message Oriented Middleware)인 JMS가 SMTP나 AMQP(Advanced Message Queue Protocol)와 통신이 불가능하여, 메시지를 보낼 때마다, 새로이 Connection을 연결하고, 연결하는 과정에서 많은 시간이 할애되어 시간이 지연되는 것이었다.
이를 해결하기 위해서 Mail들을 쌓아놓고 connection을 수동으로 열어서 쌓여있는 Mail들을 보내고 connection을 닫는 동보발송 형태를 사용하는 방식이 있는데, 메일을 보내야 하는 사람이 많다면, 스팸처리가 될 수 있다고 한다.
따라서 그 다음으로 생각한 것은 직접 메일 보내는 것을 성공했다는 상태코드를 보내고, 실제 메일을 보내는 작업은 비동기적으로 수행하게 하는 것도 방법일 것 같다는 생각이 든다.
비동기 얘기를 하니 떠오른 것은 CS를 공부하면서 동기, 비동기, blocking, non-blocking 에 대한 구분도 정말 어려웠는데,
blocking, non-blocking은 제어권을 넘기느냐 넘기지 않느냐에 대한 구분과 동기, 비동기는 반환 값의 확인 여부에 달려 있다는 것으로 구분을 확실하게 할 수 있게 되었다.
공부하면 할 수록 정말 공부할게 엄청 많구나. 라는 생각이 들면서도, 지식이 쌓여가면서 내가 몰랐던 것을 이해하는 그 기분은 이루 말할 수 없는 것 같다.
어제는 팀 네이버 공채 지원 서류를 작성했는데, 팀 네이버가 바라는 인재상에 맞게 내 생각을 소신있게 써나갔는데,
서류에서 합격했으면 좋겠다! 인프런의 기술팀장 김영한님이 얘기해주셨듯이, 개발 공부는 롱런이고 조급해하지말고 착실히 공부를 해나가다보면 나 자신도 성장하고, 좋은 회사에 들어가 일 할 수 있을거라고 생각한다.
추가적으로 항상 열심히 하는 모습을 보고 응원해주는 주변 사람들에게 정말 감사하다. 작은 응원이 지치지 않고 열심히 할 수 있는 원동력이 되어서 또 힘낼 수 있다.
모각코라는 것을 알게 되어서 지인들과 같이 공부할 수 있도록 게더타운을 열었다. 학창 시절에 꿈 중 SOHO를 빌려서 개발을 좋아하는 지인들과 그 공간에서 개발을 하는 것이였는데 사실 돈도 많이 들고 허망한 꿈이긴 하다ㅎㅎ.. 하지만 게더 타운 덕분에 메타버스지만 학창 시절에는 이루지 못한 꿈을 그래도 이룰 수 있게 된 것 같아서 기쁘다. 많은 지인들에게 같이 하는 것은 어떤지에 대해서 물어봤는데, 다들 흔쾌히 수락해서 혼자 공부하는 느낌도 들지 않아 더 활력있게 공부 할 수 있게 된 것 같다!
마지막으로 앞으로 TIL을 한 번 써볼까 한다.
고민인 부분은 하루에 공부하는 분량이 많아서 어떤 것을 써야하나 고민이 있는데, 그 날 공부했던 것 중에 가장 인상깊게 공부했고, 내가 고민한 부분 혹은 이해하기 어려웠지만 이해한 부분에 대해 적을까 한다. 내가 고민하고 이해하는 방식이 다른 사람에게도 도움이 되었으면 좋겠다
'회고' 카테고리의 다른 글
프로그래머스 데브코스 백엔드 4기 면접 회고 및 합격 (0) | 2023.05.19 |
---|---|
5월 1주차 회고 (1) | 2023.05.07 |
4월 4주차 회고 (0) | 2023.04.24 |
2023년 3월 4주차 주간 정리 (0) | 2023.03.26 |
머리를 비우기 (0) | 2023.03.21 |