1. 3번째 레벨 인터뷰를 진행했다.
우테코에서는 매 레벨을 마무리하며 '레벨 인터뷰'를 진행한다.
레벨 인터뷰란 각 레벨에서 학습한 내용을 인터뷰 형식으로 진행하는 말하기 활동이다.
📍 받은 질문
- 팀 서비스 소개
- 톰캣의 JSESSIONID를 사용했는데 이게 무엇인가요? 또한 어떻게 사용했나요?
- 토큰 대신 세션을 사용한 이유는?
- 세션 클러스터링을 만드셨나요? 세션 클러스터링을 적용한다면 어떻게 적용할 예정이었나요?
- 인프라 구조에 대해 간략히 설명해주세요
- 젠킨스를 사용한 이유는?
- 젠킨스에서 사용한 플러그인은 무엇인가요?
- DB 서버 안에서 운영 DB와 개발 DB가 함께 있는데 어떻게 각각의 DB에 연결되도록 설정했는지?
- 스프링 트랜잭션의 유의사항이 무엇이었나요? 어떻게 해결했나요? 구체적으로 어떤 상황이었나요?
- JPA에서 동일성 보장이 어떤 방식으로 이루어지나요? 동일성 판단을 뭘 기준으로 하나요?
- DB 정보를 어떻게 숨겨 관리했나요?
- 개발과 운영 서버를 각각 두고 인프라 서버를 분리한 이유는 무엇인가요?
- 레벨3에서 어떤 것을 핵심적으로 맡으셨나요?
- 모니터링 시스템을 어떻게 구축했는지 간략하게 설명해주세요
- 매트릭에서 수집한 지표들은 어떤 것들이 있었나요? 실제로 모니터링을 통해 문제를 발견한 경험이 있었나요?
- 모니터링 툴로 클라우드워치와 같은 다른 툴을 고려하지 않은 이유는?
- 클라우드워치의 존재를 안 지금 다시 선택한다면 어떤 툴을 선택할 것인가요? 이유는?
- 팀 내에서 의견충돌이 난 경험이 있나요?
- 팀 분위기가 파트 담당자의 의견을 거의 따르는 분위기라고 하셨는데 이에 대해 후회했던 적이 있나요?
📍 받은 피드백
- 적용 당시에만 고민을 하는 것이 아니라, 추후에도 변경을 고려하는 자세가 멋집니다.
- 인프라 구조에 대한 총체적인 이해 존재
- 아마 한 포트에 두개의 db가 존재하는 형태 같은데…맞나? 다시 확인해 봤으면 좋겠다.
- 서브모듈을 사용하는 것 대신 sed 명령어를 사용하는 것에 대한 이유가 명확히 존재함.
- 기술적 트러블 슈팅 경험이 상당히 많은 것 같다. 로깅 해결과 관련된 문제도 그렇고, 세션 문제를 겪고 해결한 경험 때문에 문제 대처 경험이 많았음이 드러났다.
- 담당하지 않은 부분까지 많이 학습 하시고 잘알고 있는 부분이 인상 깊었습니다.
- 경험과 관련지어서 답변을 해주신점과 기술을 사용한 이유를 이해하기 쉽게 잘설명해주신점이 좋았습니다.
- 말할 때 자세가 편안해보인다. 듣는 사람도 편안해짐.
- 좋은 협업이 뭘까? 라는 본인의 기준을 잘 만들었으면 좋겠다. 본인이 이번 프로젝트를 통해서 협업 과정에서 겪은 논의적 문제 해결은 많이 경험하지 않은 것 같은데, 이에 대한 기준을 잘 세워보고 4레벨에 임했으면 좋겠다는 생각!
- 본인이 하지 않은 부분이라도 설명을 하려고 하는 모습이 인상적, 한 끗 차이인데 얼버무리는 느낌이 아니라 좋았다.
- 대답을 잘 하고 있었는데 한번 끝까지 해봤으면 하는 아쉬움이 있다.
- 일정한 톤과 속도로 말씀해주셔서 듣는데 편안했습니다.
📍 후기
지금까지 우테코에서 공식 레벨인터뷰 3회 + 레벨인터뷰 스터디에서 진행한 비공식 인터뷰 3회 = 총 6회의 레벨인터뷰를 진행했는데,
그 모든 인터뷰를 통틀어 가장.. 못했다........^^
1차 위기 : 세션 클러스터링
토큰과 세션 중 세션을 택한 이유로 세션의 장점들을 이야기하다가 마지막에 '추가로, 세션을 사용하게 되면 세션 클러스터링 등 다양한 인프라 구조를 구축해볼 수 있을 것 같았다' 이런 말을 했는데, 꼬리 질문으로 '세션 클러스터링 어떻게 만들 것이냐'가 들어와서 굉장히 당황했다..ㅎㅎ 세션 클러스터링이 뭔지만 진짜 가볍게 알고 있었는데 실제 구현 방법에 대한 질문이 들어와서 횡설수설 했다 ㅜㅋㅋ
2차 위기 : 하나의 인스턴스에 운영DB, 개발DB
현재 우리팀은 ec2 하나에 운영db, 개발db가 다 있는 상황이다. 나와 망고가 우리팀 전체적인 인프라를 맡았는데 딱 하나.. db서버만 다른 크루가 구축했다. db서버에 접속해 bind-address 열어준거 말고는 따로 추가작업을 하진 않아서 뭐랄까 크게 관심을 두고 있지 않았는데, 딱!! 관련 질문이 들어와서 당황했다. 그러게 둘 다 3306인데 어떻게 해놨지?! 뭐 결론만 말하자면 하나의 mysql에 스키마를 두개 넣은 구조였다.. 꽤나 복잡한 우리팀 인프라 구조를 거의 숙지하고 있다고 생각했는데..어떻게 db서버 구조를 제대로 몰랐을까!ㅋㅋㅋ
3차 위기 : 트랜잭션 AOP 유의사항
스프링의 @transactional은 프록시 기반의 AOP로 이루어져 있어서 내부 호출할 경우 트랜잭션이 제대로 먹지 않는다. 이 내용을 실제 프로젝트에서 어떤 상황에 적용?했는지에 대한 대답을 하는 과정에서 애를 먹었다. 우리 프로젝트에서 해당 내용이 등장한 파트가 다른 크루 담당이었어서 코드에 대한 깊은 전체 이해보다는 그냥 트러블슈팅?에 대한 이해만 하고 있었는데, 당시 코드 상황에 대해 자세히 설명해 달라는 질문이 들어와서 횡설수설했다..^^
4차 위기 : JPA의 엔티티 동일성 보장 원리
사실 ㅋ ㅜㅜㅜ 알고 있는 내용이었는데 앞질문들에서 멘탈이 나가서 그런가 꾸역꾸역 설명하다가 결국 모르겠습니다로 마무리지었다.. 이게 가장 아쉬운 것 같다.
위의 위기들을 겪으며.. 멘탈이 실시간으로 나가기 시작했고 점점 살짝의 패닉상태에 빠졌던 것 같다.
흠 인터뷰 끝난 직후에 '와 진짜 망했다' 싶어서 너무 슬펐는데, 지금 다시 한 번 생각해보니 막 엄청 망하지는 않은 것 같기도하고..?ㅋㅋㅋㅋㅋㅋ 아닌가?ㅎ
이전 레벨의 레벨인터뷰 때는 전날에 하루 날잡고 레벨로그 쓰면서 빵꾸난 지식을 채우고 다른 크루들과 모의 인터뷰도 짧게 진행했었다.
이번에는 도대체 무슨 생각이었는지..?ㅋㅋㅋ (이전과 다르게 방학 직후에 진행해서일까?) 전날에 놀았다...^^
쩝 . 내 잘못이지 뭐. 너무 안일했던 것 같다. 정신 차려 😵
📍 느낀 점 or 개선할 점
- 자소서, 포트폴리오, 이력서 등 면접에 쓰이는 자료는 일종의 트랩?이다.
- 이거 질문해주세요~
- 정말 자신있고 깊게 고민해본 토픽'만' 쓰자
- 무지성으로 토픽 나열하다간 ㅎ
- 어차피 면접 시간은 한정되어 있다. 내가 잘 아는 내용들로 판을 깔아놔야 나에게 유리한 방향으로 면접이 흐르게 된다.
- 평소에 프로젝트든 공부든 뭐든 내가 한 작업, 고민에 대해 짧게라도 적어두자
- 분명 당시에 많은 이슈가 있었고 많은 고민 끝에 해결했는데, 나중에 '뭔 이슈 있었지? 어떻게 해결했지?' 생각해보면 기억이 안나더라
- 그런 의미에서 TIL 굿!
- 단순 이론보다는 왜 이 방법을 썼고, 어떤 상황에서 썼고, 어떤 단점을 느꼈고 등등 실전(?)에 어떻게 적용했는지
- 어떤 기술 또는 방법을 선택 할 때에는 이유가 있어야한다.
- 코드 한줄한줄에 의미를 담자
- 코드레벨에서의 고민이 좀 부족했던 것 같다.
- 의미있는 개선 경험 (깊은 고민)
- 개발(또는 구축) 끝. 이런식으로 너무 그냥 휙휙 넘어간 것 같다. 깊은 고민을 하자.
- 압박상황(ex. 면접, 발표 등)에서의 멘탈 관리
- 얘는 어떻게 해야할까?!