lv3 | 레벨 인터뷰 회고

yeonk·2023년 8월 31일
1

우아한테크코스

목록 보기
19/19
post-thumbnail

시작하면서


레벨3 인터뷰는 기존과 다르게 코치님 없이 크루들끼리 진행하였다.
레벨1 인터뷰와 같이 레벨로그를 하루 전에 공유한 상태에서 진행하였다.

레벨로그에 어떤 내용을 적어야할지 고민하다가 마지막에 담당한 인증 부분과 우리 팀의 자랑인 협업 위주로 작성했다.

이번 레벨 인터뷰는 메리, 주디, 두둠, 레오, 오리, 리오, 에단과 함께 했다.





레벨로그


기획 과정

  • 팀원들과의 소통을 통해 기존에 기획한 기능들을 선별하고 수정하여 실현 가능한 목표를 확립해 나가는 경험
  • 구글 스프린트 기반의 아이디어 도출 과정

기술 블로그, GitHub Discussion 사용

  • 기술 블로그를 통해 담당한 부분에 대한 지식 공유
  • GitHub Discussion를 통해 협의 및 소통, 회의 내용 기록 & 고민 공유

인증 관련 트러블 슈팅

  • 프론트엔드 크루와 페어 프로그래밍 진행
  • session id가 브라우저에 담기지 않는 문제 해결

사용자 인증

  • OAuth 2.0을 통한 로그인 구현
  • 외부 API 에 의존적인 OAuth 2.0 에 대한 테스트 고민
  • 인증 방식에 대한 고민 - 토큰과 세션 방식

인프라

  • GitHub Actions를 사용한 CI 구현 / Jenkins를 이용한 CD 구현
  • nginx 사용 및 https 적용
  • flyway를 통한 db 형상 관리

기타

  • 공공 데이터 API 파싱 및 전처리
  • RestDocs를 통한 문서화





질문


답변은 제외하고 질문만 정리해보려고 한다.

  • 간단한 자기소개와 프로젝트에 대한 소개 부탁드립니다.

    • 어떤 부분을 관리해 주시길래 사용자가 더 편하게 느낄 수 있는건가요?
    • 스케줄 체크 같은 걸 해주나요?
  • CI/CD를 구현할 때 CI는 Github Actions로 하고, CD는 Jenkins로 했는데 두 개를 구별해서 사용하는 이유가 있을까요?

    • 학습 측면에서 두 가지를 이렇게 같이 구현을 해놨는데 관리 측면에서는 한쪽으로 묶는 게 좀 더 편하지 않을까요?
  • 인증 방식에 대한 고민으로 토큰과 세션 방식을 적어주셨는데, 어떤 부분에서 고민했고, 어떤 부분을 더 좋다고 생각했고, 어떤 걸 택했는지 들어봐도 될까요?

    • 그 저장한 걸 서버에서 저장하시고 계시다고 하셨는데 데이터베이스에 저장할 수도 있고 메모리에 저장할 수도 있으실 텐데 어느 쪽에 저장하셨는지?
    • 그럼 메모리에 저장한다면 서버가 에러가 나서 터지거나 다시 배포를 한다면 메모리에 있던 내역들이 사라지기 때문에 이제 기존에 로그인 정보를 기억하고 있던 유저들의 데이터가 다 날아갈 수 있잖아요.
    • 어떤 식으로 해결할 수 있겠다 그런 이론적으로 논의된 부분이 있나요?
  • OAuth 2.0 사용해서 사용자 인증을 구현셨다고 하셨는데 혹시 외부 api에 의존하는 기능을 어떻게 테스트하셨는지?

    • 세 가지 방법 다 제가 이해한 걸로는 어쨌든 워킹을 진행을 하는 건데 혹시 마지막에 얘기하셨던 카카오 서버의 역할을 대신하는 컨트롤러를 mocking하는 거랑 아니면 좀 더 앞단에서 mocking 하는 거랑 어떤 장단점이 있는지?
  • 인프라 부분에서 nginx를 사용하셨다 했는데 구체적으로 엔진스가 이번 프로젝트에서 어떤 역할을 하는 건가요?

    • 암호화 복호화 측면에서 이점이 있다는 건 구체적으로 어떤 걸 의미하는건가요?
    • 그러면 지금 CORS를 nginx 로 처리하고 계신건가요?
    • CORS를 서버에서 해도 어차피 같은 애플리케이션을 여러 개 띄울 텐데 그러면 nginx로 굳이 설정할 필요가 따로 있을까요?
  • 혹시 ec2 인스턴스 몇 개 쓰시고 어떻게 운용하고 계시는지?

    • 빌드 서버라는 건 이제 인프라 서버로 이해를 했는데, 거기에 젠킨스가 있는 건가요?
    • 빌드 서버에서 다른 운영 서버나 개발 서버에서 배포를 해야 될 때(CD) 혹시 어떤 식으로 흘러가고 있는지 설명해 주실 수 있나요?
    • 쉘 스크립트 파일은 그러면 운영 서버랑 개발 서버에만 있는 건가요? 젠킨스에는 쓰지않고?
    • 제가 피움 팀원한테 들은 문제 중에 하나가 이제 다른 서버의 쉘 스크립트 파일에서 다른 쪽 서버의 쉘 스크립트 파일을 열고 그쪽에서 다른 쪽 서버에 스크립트 파일이 돌 때 그 쪽 프로세스가 끝나지 않아서 그쪽 프로세스가 끝나는지 감지를 못해서 처음에 열었던 쉘 스크립트에서 이 프로세스가 꺼지는지 해결을 못하는 문제가 있었다고 들었는데 혹시 해당 문제 공유받으신 적 있나요?
  • 혹시 공공 데이터 관련된 부분도 있는데 어떤 부분에서 프로젝트의 공공 데이터가 필요했을까요?

  • 피움 서비스 코드를 보면은 빌더를 만들어가지고 따로 메퍼에서 dto로 변환하는 과정이 있거든요 스태틱 메서드를 사용해서 혹시 그 클래스를 스태틱 메서드 말고 빈으로 하는 방법도 있을 텐데 왜 스태틱 메서드로 했는지 그 이유가 좀 궁금합니다.

  • 그러면 이게 dto가 많아지면 래퍼도 자연스럽게 많아질 것 같은데 이럴 경우에는 계속 래퍼를 계속 만들어서 지금 한 패키지 안에 있는데 그래서 계속 관리할 예정인지 아니면은 이거에 따라서 또 패키지 구조가 바뀔 여지가 있는지 그런 부분이 궁금합니다.

  • 인증 관련 트러블 슈팅에서 세션 아이디가 브라우저에 남지 않는 현상이 있었다. 이거는 어떤 문제였을까요?

  • 플라이웨이를 제공하셨는데 이 플라이웨이가 롤백이 기본적으로 안 되는데 이런 부분에 관련해서 어떻게 버전 관리를 할 건지 그런 부분은 혹시 팀 쪽으로 논의된 부분이 있나요?

  • 왜 RestDocs로 문서화를 진행했는지?

  • QueryDsl을 도입하신 걸로 보이는데 혹시 도입하게 된 배경을 설명해 주실 수 있나요?

  • 블로그가 되게 활성화가 잘 돼 있어서 좋아 보이는데 혹시 블로그에 팀원들이 각자 글을 올릴 때 다른 팀원이랑 공유를 하고 리뷰를 받고 올린다든지 어떤 한번 검사 과정이 있는지?

    • 검수에 대한 필요성을 느끼지는 않는지?





크루 피드백


피드백은 옵저버 역할을 한 2명의 크루의 의견을 정리한 내용이다.

학습 측면

  • 좋은 점

    • 사용한 기술에 대한 장단점을 잘 알고있는 것 같다.
    • 테스트와 관련해서 고민을 많이 해본 흔적이 보인다.
    • 인프라 관련된 구조를 잘 알고있는 것 같다.
    • 생각해본 부분이 아니었지만 자신의 생각을 얘기하는 것이 좋았다.
    • CI/CD에 대한 개념을 명료하게 설명했다.
    • 인증 관련하여 개선 방향을 고민해봤다는 점이 좋았다.
    • mock 서버에 대해 restTemplate을 사용하게 된 계기와 배경을 설명해주었고, 고민한 내용을 바탕으로 짠 코드에 대한 근거가 명확한 부분이 좋았다.
    • 모킹 세 가지 방식 중 채택한 방식의 장점을 충분히 경험했다는 게 느껴졌다.
    • 인프라에 대해서도 전반적인 구조를 숙지하고 있다고 느껴졌다.
    • 특정 질문에 대한 꼬리 질문에도 근거를 가지고 대답하는 부분이 직접 경험을 해보거나 학습이 충분히 이루어졌다고 느껴졌다.
  • 아쉬운 점

    • 서비스 규모가 커질 경우도 상상하면서 기술 선택하는 것이 좋을 것 같다.
    • Nginx에서 Cors 설정을 하게되면 WAS까지 Cors 관련한 요청이 가도 않아도 되는 장점 등이 있는데 이 부분을 인지하면 더 좋을 것 같다.
    • 인증과 관련하여 경험한 장점의 근거가 충분했다면 좋았을 것 같다.
    • querydsl 도입은 특정 기술 도입하는 것은 프로젝트에 큰 영향이 있을 것 같아서 이유를 조금 더 숙지하면 좋을 것 같다.

인터뷰 측면

  • 좋았던 점

    • 목소리 딕션이 굉장해서 전달력이 좋다.
    • 표정에서 여유가 느껴져서 당차보인다.
    • CI/CD에 대해 경험해보지 않은 부분도 고민해본 뒤 설명하는 게 좋았다.
    • 대답하는 톤이 일정해 듣기 편했다.
    • 고민해보지 않은 부분은 팀원들과 논의를 먼저 해본다고 대답하는 모습에서 팀 문화가 느껴져 좋았다.
  • 아쉬웠던 점

    • 헷갈리는 부분이 있을때 말을 아주 조금 저신다.
    • 중간에 막히는 부분이 있을 때 텀이 길어졌던 것 같다.





끝으로


언제나 느끼는 거지만, 레벨 인터뷰 하기 전에는 너무 걱정 되고 긴장된다. 하지만 끝나고 나면 나의 학습 상태를 알 수 있어서 너무 좋은 것 같다.

레벨 인터뷰를 하면서 스스로 아쉬운 부분이 있다.

이번 레벨에서 다른 팀원과 분업한 부분을 잘 숙지해보려고 팀 블로그를 열심히 봤는데도 답변을 잘 못한 것이 아쉽다. 아무래도 직접 담당하지 않은 부분이라 한계가 있었던 것 같다(특히 queryDsl ㅠㅠ).

방학 때 간단하게라도 잘 모르는 부분에 대해 다시 구현해보는 경험을 했어도 좋았을 것 같다..아쉬움이 남지만 이미 지난 일 이기에.. 부족한 부분은 이후에 보완하도록 해야겠다.

한 편으로는 로그인 관련 글을 팀 블로그에 너무 늦게 올린 것도 팀원들에게 미안한 마음이 들었다. 내가 레벨 인터뷰 준비를 하면서 팀 블로그 글을 참고한 것처럼 팀원들도 그랬을텐데.. 더 빨리 글을 써볼걸 하는 생각이 든다:시든피우미:.

물론 반대로 스스로 좋았던 부분도 있다!

다른 레벨에 비해 상대적으로 이번 레벨 인터뷰는 준비를 많이 안 했는데, 답변을 꽤 많이 할 수 있었다. 아마 팀 블로그와 디스커션.. 그리고 많은 회의 덕분이 아니었을까?! 🌱

그리고 기존 레벨 인터뷰들에서는 목소리가 작고 자신감이 없어보인다는 피드백을 많이 받았는데, 이번에는 목소리 톤도 적절했고 전달력도 좋았다는 피드백을 받았다. 조금은 성장한 게 아닐까?!하는 생각이 들었다.

레벨 인터뷰를 통해 나의 현재 상태를 확인할 수 있었고, 보완해야할 부분 역시 알 수 있었다.
이번 인터뷰 역시 매우 유익했던 것 같다.
이제 인터뷰도 끝났으니, 레벨4도 열심히 해야지~ 아자아자 화이자.🙂

0개의 댓글