[F-Lab] 멘토링 8, 9주차 회고
지난 한 주간 나는 무엇을 공부하고, 배웠고, 느꼈는가?
🏃🏻♀️ 7, 8주차 이후의 시간들
프로젝트
7주차 멘토링 시간 때 라이브러리를 사용하지 말고 직접 코드를 짜보고, 너무 어렵거나 좀 더 프로젝트가 커질 때 라이브러리를 사용해보라는 멘토님의 조언에 따라 직접 구현해보기 위해 Nginx와 Guava, Caffeine과 같은 라이브러리의 코드를 먼저 많이 봤던 것 같다.
구조를 어떻게 가져가면 좋을지 우선 코드를 조금이라도 짜봐야지 하고 시작을 했지만, 결국 PR을 하지 못했고, 8주차 코드 리뷰시간에 내 코드는 리뷰를 할 수 없었다.
8주차 멘토링 시간 이후에도 Nginx에 대한 자료들을 좀 더 찾아봤는데, 중국에서 작성한 블로그 포스트(?) 로 추정되는 글들이 보다 자세해서 도움이 많이 되었다.
레퍼런스들을 읽은 후에 Github Wiki 에 나름대로 간략히 다시 정리했다.
어떤 구조로 가져갈 것인지는 머릿속에 정리가 되었지만, 9주차 멘토링 시간 전날까지 코드를 작성하지 못해서 동료 멘티님께 고민이 되는 부분을 털어놨고 조언을 들을 수 있었다.
동료 멘티님과 대화를 하면서 어떻게 하면 좋을지 머릿 속으로 정리가 되었고, 9주차 멘토링 시간 직전에 PR을 겨우 할 수 있었다. (감사해요 멘티님!)
알고리즘 문제 풀이
요즘은 Leetcode 의 Linked List 알고리즘 문제들을 풀었다.
HashSet, HashMap 등을 디자인 하는 문제들도 있었는데, 이런 문제를 풀면서 Data Structure에 대해 좀 더 알 수 있는 기회를 얻는다는 느낌을 받았다.
또, Linked List 에 대한 설명과 풀었던 문제들을 정리해 스터디 Repository 에 업로드했다.
이 블로그에도 업로드해야하는데 시간이 부족하다는 핑계로 F-Lab 회고록 밖에 못올리고 있는 것 같다.
어서 정리해서 차근차근 올려야지..!
✍ 실시간 멘토링 8, 9주차 회고
8주차 멘토링 시간에 멘토님께서 Nginx는 굳이 Cache 기능이 필요 없는데, 왜 Cache 부분을 선택했는지, 그리고 Cache 관련해서 어떤 플랜을 가지고 있는지 물어보셨다.
(나중에서야 안 사실이지만 Nginx에서 Cache는 Config에 지정을 하지 않으면 동작하지 않는다.)
우리는 단순히 Nginx의 기능을 Master 와 Worker / Cache (Cache Loader, Cache Manager)로 나누었고, 동료 멘티님은 Master와 Worker, 그리고 나는 Cache Loader와 Cache Manager 를 맡은 것이다.
Cache가 무엇인지, 또 어떤 매커니즘으로 동작하는지 자세히 알지 못했기 때문에 이번 기회에 잘 알 수 있을 것이라고 생각했다.
그리고 Nginx의 Cache 기능을 분석해서 구현하면 된다고 생각해서 깊게 생각하지 않았는데, 멘토님의 질문을 받고 약간 당혹스러웠다.
너무 안일하게 생각했던 것 같다는 생각에 8주차 멘토링 시간 이후에 다시 한번 생각을 정리하는 시간을 가졌다.
9주차 멘토링 시간에 Cache Loader와 Cache Manager를 어떻게 구현할지에 대해 정리해갔던 생각을 말씀드렸고, PR한 코드를 리뷰했다.
우선 멘토링 시간 직전에 PR하느라 동료 멘티님이 올리신 코드를 보지 못했는데, 다음 시간부터는 1~2 시간 전에 동료 멘티님의 코드를 읽고 숙지해가야할 것 같다.
같이 하는 프로젝트이기 때문에 적어도 어떤 부분을 구현하고 있는지, 어떤 기능을 하는지 정도는 알아야하기 때문이다.
내 코드를 리뷰할 때는 Cache 는 싱글톤 패턴을 사용할 것인지, (우선 Map으로 구현했기 때문에,) 싱글톤 패턴을 사용할 거라면 ConcurrentHashMap을 사용하는 것이 좋을거라는 조언을 해주셨다.
다음 시간에는 다른 부분보다 Cache 부분을 좀 더 업데이트해볼 것을 권해주셨다.
멘토님이 하신 질문들
- 프로젝트에서 Cache 부분을 선택한 이유
- Cache Manager와 Cache Loader를 어떻게 구현할건지에 대한 계획
- Cache 관련 Interface를 만든 이유
- Cache 는 싱글톤 패턴을 사용할 계획인지? (싱글톤 패턴을 사용할 거라면 Map 보다는 ConcurrentHashMap 을 사용하는 것이 좋지 않을지 조언)
깨달은 점 / 느낀점
- 프로젝트 파트너의 코드도 멘토링 시간 전에 숙지하고 들어가자.
- 기능을 어떤 플랜을 가지고 어떻게 구현할지 나만의 정리된 생각이 중요하다.
- 디자인 패턴에 대해 공부해야할 것 같다.
🎯 다음주에는?
- ConcurrentHashMap에 대해 공부한 후, Cache Class의 Map으로 구현한 부분 수정
- 프로젝트 코드 작성 및 PR
- 알고리즘 문제 풀기 + 스터디 글 업로드
💡 마지막으로
8주차 멘토링 시간에는 프로젝트에 대해 내 생각을 다른 사람에게 설명할 수 있을 정도로 ‘잘’ 정리해야 한다는 깨달음을 얻었고,
9주차 멘토링 시간에는 디자인 패턴을 공부해야하는 필요성과 동료의 코드를 미리 조금이나마 숙지해가자는 생각을 가지게 되었다.
그리고 Cache 부분이 간단하고 쉬울 것 같다는 생각을 가졌었는데, 9주차 멘토링 시간 이후에 직접 구현하려면 생각보다 복잡하고 어렵겠구나 하는 생각이 들었다.
그래도 Library를 사용하지 않고 최대한 내 힘으로 많이 구현해보고 싶다! 다음주에도 화이팅이다!
댓글남기기