Network Study Review
지원 동기
- 금융권 SI 하청업체 직원으로서 DB, 네트워크를 쓸 일이 아예 없었다.
- 그래서 이대로는 제대로 된 백엔드 개발자로서 성장하기 어렵다고 판단했다.
- RDB는 따로 공부를 하고 있었고(oracle), 네트워크 지식을 공부할 필요를 느꼈다.
- mysql도 나중에 해야되긴 하는데…어쨌든…
- 마침 OKKY에서 네트워크, DB, OS관련 스터디 모집 공고를 보았고, 네트워크 쪽에 지원했다.
활동내용
- 2024.03.08 ~ 2023.04.05까지 총 5번의 스터디가 있었다.
- 그 중 4번째 주는 과제는 정리했지만, 청첩장을 금요일 저녁에 받게되어 못갔고 나머지는 전부 참여했다.
- 1주일에 금요일 하루, 저녁 8시부터 2시간씩 진행됐다.
- 질문 내용을 공유받으면 해당 질문들을 공부하고 답변하는 것을 원칙으로 진행되었다.
- 한 3주차부터 인성면접 질문들도 공유됐던 것으로 기억한다.
- 나는 chatGPT, 구글링으로 기술 질문들에 대해서 학습했다.
- 책은 샀는데, 책은 스터디가 끝나고 배운 내용을 체계적으로 정리하려는 목적으로 샀다.
- 읽고 나중에 정리해서 블로그에 post를 올릴 예정이다.
면접 진행 방식
- 공부해온 내용을 1명의 면접자, 2명의 면접관, 2명의 관찰자로 역할을 나눠 돌아가며 면접을 봤다.
- 근데… 이게 주가 갈수록 사람이 줄어들어서 3주차부턴 절반도 안되는 사람만이 참여했다.
- 네트워크는 그나마 상황이 나았는데, OS의 경우 사람이 정말 적었다..
- 15분을 면접을 보면 5분간 면접관, 관찰자들이 피드백을 주었다.
- CS 지식에 관해서는 실무에서 쓰는 사람들끼리의 면접이 아니다보니, 깊게 꼬리 질문을 하는건 어려웠다.
- 주어진 질문들도 많아서 그 질문들만 해도 시간이 꽤 촉박해서, 더 깊게 질문하기도 어려웠다.
- 다만 나는 조금 악질적으로 굴었다. 모를거 같은 거 몇 개 골라서 때때로 물어봤다.
- 그리고 조금 애매하고 추상적으로 답변하는 느낌이면 굳이 꼬치꼬치 캐묻기도 했다.
- 면접은 모르는 게 나올 수 밖에 없으니까.. 그런 실제같은 환경을 만들어보고 싶었다.
- 그리고 애매하게 아는 거 같은 느낌이 드는 것들은 면접결과 ‘애매한’ 사람으로 판단돼서 못뽑힐테니..좀 더 보완해서 공부하면 좋겠다는 의도였다.
- 위처럼 나는 지식에 관련된 피드백을 좀 많이 했던 거 같다. 다른 분들은 면접 태도에 관해서 많은 피드백을 해주셨다.
내가 한 피드백
- 다른 분들은 어떻게 피드백 했는지는 모르겠지만, 나는 주로 지식에 관한 피드백이 많았다.
- 맞는 피드백만 했기를 바라는데.. 아니면.. 음… 어쩔수없다. ㅎㅎ;
- 정확한 용어의 중요성
- 정확한 방식 숙지
- jwt의 경우 그냥 base64 encoding이 아닌 base64 url encoding..
- 애매한 용어 쓰지 않기
- 용량보단 리소스.. 리소스보단 CPU나 메모리..
- 아래는 나중에 알게된 사실인데, 어디서나 쓰이는 용어-client 등-는 특히 조심해야할 거 같다.
- 모호한 개념에 관한 맥락에 따른 구체적인 이해가 중요하다는 의미다.
- SSL의 클라이언트는 리액트 등의 프론트 프레임워크가 아니다. 상대방 OS에 내장된 SSL library(윈도우는 Schannel이 주로 사용)다.
- HTTP의 client - server 구도가 광범위하게 쓰이다보니 나처럼 client를 웹 프론트 프레임워크로 오해하는 분들도 있지 않을까 싶다.
- 만약에 면접관이 그래서 SSL handshake에서 client가 뭡니까? 물어봤는데 웹 프론트 프레임워크로 대답하면.. 아쉬움이 남을것이다.
- 이런 면에서 transport 계층 이하는 OS랑 좀 연관되는 부분이 있는 거 같기도.. RDB도 disk I/O call하고.. 프로시저는 context switching도 하고…
- 이러면 OS도 공부하긴 해야되는데 왤케 공부할 게 많은거 같지.. 참 재밌는 직업이긴 한데.. 프로그래머는 어찌보면 참으로 가성비 안나오는 직업이다..
- 솔직히 나는 면접 태도같은 건 잘 눈치채지 못하는 편이라, 엄청 크게 신경쓰지는 않았다.
- 비대면 면접이었는데, 눈이 위가 아니라 왼쪽이나 오른쪽으로 갈 때 정도는 말했던 거 같다.
- 이러면 컨닝 의심받을 수 있다.. 그 외에 태도 관련 피드백은 주로 심하게 움직일 때 주로 했던 거 같다.
내가 받은 피드백
- 나는 면접 기술에 관해서 꽤나 좋은 피드백을 얻을 수 있었다.
- 우선 내가 말을 늘어놓는 습관이 있다는 피드백을 받았다.
- 또 알고 있습니다와 같이 애매하게 끝맺음 한다는 피드백을 받았다.
- 그래서 두괄식으로 말하려고 노력했다.
- 조금 두괄식으로 말했나 싶었는데, 이해는 되는데 썰풀이 같다는 피드백을 2주차에 받았다.
- 그래서 공기업 논술 시험 보듯 개괄적으로 연관 개념까지 모두 설명하려고 하는 습관을 버렸다.
- 3주차부터는 두괄식과 관련된 피드백은 거의 받지 않았다.
- 다만 여전히 알고 있습니다 같이 끝맺음을 한다는 피드백을 5주차까지도 받았다.
- 조금 더 자신감있게 자신의 지식을 설명하는 태도가 필요하다는 피드백을 받았다.
- 나떼는(?) 대학 다닐 때 전담교수한테 넌 자신감 넘쳐서 좋다는 피드백을 늘 받았는데..
- 현실적으로 말하자면 비전공자라서 지식에 관해서는 좀 자신이 없는 건 사실이다.
- 대신 그만큼 자신있게 주장할 수 있게 지식을 다져야 겠다는 다짐을 했다.
- 당연히 ~알고 있습니다가 아니라 ~입니다로 말투도 바꿔야겠지만 말이다.
- 그 외로 인성면접에 관해서도 질문을 받았는데, 거기서 SI와 서비스 기업의 문화 차이를 크게 느꼈다.
- 내가 팀에서 나가면 어떤 변화가 있을거냐고 물어보는 질문
- 어떤 팀장이 좋냐는 질문
- 디자이너랑 싸우면 어떻게 대처하냐는 질문
- 어떤 팀에서 능력이 잘 발휘되냐는 질문
- 이 질문들은 SI에서는 고려할 상황이 아니었기 때문이다.
- 내가 다녔던 파견 프로젝트는 디자이너/퍼블리셔랑은 거의 싸울일이 없고, 기획자랑 진짜 많이 싸운다.
- 팀 단위로 나가는 것도 아니고, 그때그때 가용인력 꾸려서 내보낸다.
- 그러다보니까 이걸 도대체 어떤 식으로 해석해야할 지 되게 난감했다.
- 그냥 팀이라는 것이 과업의 실행 단위(혹은 business 구현 단위)로서 설정된 적이 나에겐 단 한번도 없었기 때문이다..
- 나에게 팀은, 파견만 나가다보니 회사 소속감이 없으면 안되니까 가끔 회식하라고 만들어놓은 유희(?)단위였기 때문이다.
- 이런 질문을 처음 받아봤고, 나는 이러한 질문을 어떻게 다시 되돌려 답변할 지 좀 많이 고민하고 있다.
- 그거 말고 멘토님한테 돌발 CS 질문도 받아봤는데, 그걸 계기로 해당 부분을 더 알아보기도 했다.
- session을 load balancing 시에는 어떻게 관리할 지..
- 이론적으로는 sticky session이나 공용 세션저장소(보통 redis)를 만든다고 알고 있어 그렇게 대답했는데.. 사실 conf 쓸줄은 몰랐다.
- 그래서 해당 부분을 chat GPT한테 물어보면서 좀 공부하게 됐다. 그래서 기초적인 load balancing은 이렇게 session 관리하면 되겠다 생각했다.
- 생각보다 redis가 load balancing 용도 포함 이곳저곳에 많이 쓰여서 redis도 공부해야겠구나.. 생각하게 된 계기가 되었다.
- 금융권 SI에서는 사실 거의 안 쓰는 기술스택이 redis라서.. 금융권이 기술적으로 낙후되어있긴 하구나라는 씁쓸한 생각을 삼키기도 했지만..
소회
- 소회는 지극히 개인의 주관에 달려있는 점을 양해바란다.
- 사람들이 중간에 꽤나 많이 불참해서 좀 아쉬웠다. 아무래도 사람이 빠지는 게 눈에 보이면 스터디 활력이 떨어지기 마련이니까
- 질문이 굉장히 많아서 꼬리질문/인성질문 하기에는 시간이 좀 부족했다.
- 아마 이러한 이유 때문에 4주차 5주차에서는 CS 질문 양이 확 줄어든 게 아닐까 싶다.
- 1-3주차는 CS 위주로 물어보고, 4-5주차부터는 인성면접 질문도 하시라고 이런 구성을 한 게 아닐까?
- 꼬리질문 하기엔 시간이 촉박한 점은 아쉬운데, 신입으로 취업하기 위한 개발자들을 위한 스터디를 표방하니까 필수지식 체크가 더 중요하니 어쩔수 없는 점이기도 하다.
- 궁금한 점 질문도 거의 없었다. 사람들이 질문을 구글 폼으로 제출을 안하는지..
- 다른 사람이 모르는 것을 공부하면 나도 도움이 돼서 다들 많이 질문하면 좋겠다 했는데, 질문이 공개된 구글 폼에는 거의 없어서 아쉬웠다 ㅠㅠ
- 다른분들도 CS 스터디보다는 면접 스터디(?) 느낌으로 많이 활용하시는 거 같았다.
- 이것도 근데 어쩔수없는 점이니… 나중에 한번 실무자 study 같은 것들을 알아봐야 겠다는 생각이 들었다.
- 좋은 점도 많았다. 멘토님이 중간에 오셔서 질문을 하는데, 그 질문들이 매번 날카로운 경우가 많았다.
- 특히 인성면접 질문에서 생각할만한 거리를 많이 던지셨다.
- 그 외에도 멘토님이 SSL 관련해서 실제 전달과정을 요약한 이미지 파일을 전달해주셨는데, 그게 SSL handshake를 이해하는 데 큰 도움이 됐다.
- 또한 참여자 분들이 열정적이었다. 이게 실제로 열정적이지 않은 분들은 스터디 미팅에 아예 참석을 안해서 그런걸 수도 있다.
- 대부분의 인원분들이 필수 지식을 열심히 공부해오셨고, 그만큼 답변도 잘해주셨다.
- 또한 면접 태도에 관해서 치밀하게 피드백해주셨다. 면접 지식 같은 경우도 완전히 틀린 것들은 수정해주시는 분들도 많았다.
- 다양한 사람들이 어떻게 프로그래머로서 살아가고 있는지 듣는 게 가장 좋았다.
- 나는 금융권 파견업체 환경에서 일하는데, 저 사람들은 이러한 환경에서 일하고 이런 문화구나.. 듣는 게 재밌었다.
- 그밖에 취준생 분들도 많았는데 요새는 어떻게 공부하는 지 듣는 것도 재밌었다. 내가 중고신입으로 들어가면 저런 거 공부해야겠구나.. 생각했다.
- 또 어쨌든 난 사내 멘토링 떄 네트워크 관련해서 도메인/서버 배포까지 시켰어서 이게 실무에서 어떤식으로 활용될지 대충은 알아서 해당부분은 좀 더 수월하게 공부할 수 있던 거 같다.
- 회사에서 시켜서 HTTP 완벽 가이드도 읽어봤고.. nginx conf나 dns named.conf도 대충은 만들어봤으니.. 그쪽 부분은 이해하기 수월했던 거 같다.
- 공부를 해두면 어쨌든 간에 어느순간에 도움된다던데 그게 이럴 때 쓰는 말인가 생각이 들었다.
- 얻어간 네트워크 지식도 빼놓을 수 없다.
- 1주차에는 capsulation과 decapsulation에 대해 확실히 알게 됐다.
- OSI 7계층 중 1,2 계층은 여전히 잘 모르겠다. 전기회로/물리쪽이라 그런지 잘 안와닿는다..
- 2주차에는 SSL handshake에 대해 확실히 알게 됐다.
- HTTP나 DNS는 공부해서 어느정돈 알고 있었는데, SSL을 확실히 알게됐다.
- 3주차에는 리버스 프록시와 포워드 프록시에 대해 확실히 알게 됐다.
- 특히 nginx는 리버스 프록시와 web server를 겸용으로 할 수 있다는 사실도 알게 됐다.
- 포워드 프록시를 실제로 어떻게 설정하는 지는 아직 잘 모르는데, 한번 논리적 설정을 통해 포워드 프록시를 구현해봐야겠단 생각이 든다.
- 4주차에는 TCP의 흐름/혼잡제어에 관해 확실히 알게 됐다.
- 어떻게 신뢰성있으며 빠르게 패킷을 보내고 처리하는 지, 그 알고리즘에 대해 이해하게 됐다.
- 5주차에는 서브넷/서브넷마스크에 관해 확실히 알게 됐다.
- 회사에서 왜 서브넷마스크 때문에 DB서버가 먹통이 됐다는 지 이해하게 됐다.
개선을 바라는 점
- 질문은 개인사정이 포함되어 있지 않다면 공통된, 공개된 곳에 공유됐으면 좋겠다.
- 면접 시간이 조금 더 늘어서 꼬리 질문같은 것도 할 수 있는 여유가 있었으면 좋겠다.
- 중간에 페이지가 먹통이 되는 문제가 몇번 있었는데, 먹통이 되는 일은 없었으면 좋겠다.