한 회사의 면접을 다녀오고 나서 스스로를 반성하며, 그에 대한 회고를 해보려 합니다.
오랜만에 면접 보시는 분들에게도 도움이 되었으면 합니다.
면접에 실패한 사유
1. 수행한 프로젝트에 대한 전반적인 답변 부족
처음부터 수행한 프로젝트라면 시스템 아키텍처는 물론이고, 이것을 왜 사용했는지가 가장 중요한데, 이 부분에 대한 것을 미리 생각하지 못해
답변이 좋지 못했다.
질문 1. 프로젝트에 SQS를 도입해서 사용하면, 비용이 꽤 나올텐데 그 측면은 고려 해봤나요?
- SQS의 비용은 1백만건 이하는 무료이며, 초과시 1백만건당 0.4$/월 비용이 나오게 됩니다.
페이로드 길이만큼 추가로 부과될 수 있지만, 64KB까지의 문자열은 1건으로 본다.
최대 256KB까지 지원하지만, 64KB 이상의 문자열을 넘길만한 내용은 없었고, 현재 서비스 스펙에서는 한달에 1백만건 이상 보내는 경우는 드물기 때문에 크게 고려하진 않았습니다.
하지만 SQS 대신 S3를 활용하여 비용을 아끼도록 할 수 있습니다.라고 답변해야 원하는 답변일 것이다.
(비용이 얼마나 드는지 알고 있는지, 거기에 적합한 서비스였는지, 비용 절감을 위해 생각해보았는지가 질문의 요점이다)
질문 2. 프로젝트에 Redis를 왜 도입했나요? 휘발성이라 집계성으로는 안어울리는데
- 프로젝트는 게임에 대한 분단위 동접 데이터를 집계하는 것이 목적입니다.
게임 클라이언트에서 30초마다 접속 유저에 대한 요청을 보내고 있기 때문에, 1분 집계에서 데이터에 대한 중복은 없어야합니다.
그렇기에 Sets의 데이터 구조를 지원하는 Redis를 선택하게 되었습니다.
Redis의 저장된 데이터의 수치들은 스케줄러로 인해 RDB에 저장되는 구조를 가집니다.
그렇기에 휘발성 데이터에 대한 영속성도 보강해주게 되며, TTL도 길게 가져가 집계가 필요한 부분은 어드민 툴을 통해 재집계 처리 합니다.
Redis의 Key가 많아지면 성능에 영향을 주므로 대안으로 DynamoDB도 고려해볼 수 있을 것 같습니다.
질문 3. 스케줄러랑 Batch 프로그램은 어떤 경우에 사용하는지
- 스케줄러 : 특정한 시간에 등록된 작업을 자동으로 실행
- 배치 프로그램 : 대용량의 비즈니스 데이터를 복잡한 작업으로 처리해야하는 경우, 특정한 시점에서 스케쥴러를 통해 자동화된 작업이 필요한 경우
2. 공부한 내용에 대한 정확한 지식 부족
최근에 공부한 것에 대해서는 완벽히 이해하고 있어야한다. 그게 아니고서는 공부한 것이 없다고 말하는 편이 더 나을것 같다.
질문 1. DDD(도메인 주도 설계)가 어떤것인지 설명해주세요.
- 도메인 주도 설계란 간단히 말해 만들기 위한 소프트웨어의 영역을 설계하는 것이라고 말할 수 있습니다.
DDD 설계 예시
질문 2. Kafka와 SQS의 차이가 무엇이 있는지?
- Kafka
- Kafka는 상당히 확장 가능한 시스템이며 일괄 처리로 메시지를 보내려는 경우 (높은 워크로드에 적합)
- 로드가 높은 스트리밍 시스템을 구축해야 하는 경우 Kafka가 정말 적합하다.
- 디스크에 데이터를 저장하기 때문에 오프라인에서도 활용이 가능
- SQS
- 개별 메시지 별로 확인/실패가 필요한 경우
- 고가용성을 제공하지만 추가 비용이 존재
3. 기초 면접 질문에 대한 대비 부족
질문 1. 개발자가 적성에 맞다고 생각하는지? 그렇다면 그 이유는?
- 문제를 해결하기 위해 끊임 없이 고민하고, 해결 했을 때의 성취감을 느끼는 것으로 개발자로서의 적성에 맞다고 생각합니다.
질문 2. 스스로의 강점과 단점을 말해주세요.
- 강점은 책임감이라고 생각합니다. 서비스 퀄리티 향상을 위해 지속적으로 개선점을 찾아내고 학습하려 노력해왔으며, 서비스의 문제 해결을 위해 끝까지 포기하지 않고 원인을 찾아내어 해결하고, 회고합니다.
- 단점은 내성적 성향이라고 생각합니다. 내성적인 성향 때문에 업무를 직접 찾아서 하는 것보다 주어진 업무에만 집중하였습니다.
최근에는 내성적인 성향을 바꾸기 위해 팀에서 서비스 하는 다른 프로젝트의 업무도 자발적으로 맡아 진행하였고, 문제 해결을 위해 적극적으로 참여하였습니다.
질문 3. 회사 내에서 어려웠었던 점이 있는지 그 문제를 해결하려고 어떻게 해왔는지
어려웠던 점 : 작은 규모의 서비스였지만, 시스템 설계 부터 구축 개발까지의 발송 서비스가 맡겨 졌을 떄
해결 과정 : 초기 요구사항은 마케팅 알림톡 발송 서비스 만드는 것이였습니다. 초기에는 스케줄러 데몬으로 예약 발송 시간에
질문 4. 업무를 진행할때 잘맞는 동료와 잘 안맞는 동료는 어떠한 케이스인지?
- 잘맞는 동료의 경우 서로의 방향이 같거나 역량 보완이 될 때
- 잘 안맞는 동료의 경우 서로의 방향이 갖지 않을 때
질문 5. 주위에서 스스로에 대해 어떻게 평가 받고 있는지
결론
개발자라면 스스로가 만든것에 대해 왜 이렇게 만들었는지 말할수 있어야한다.
그리고 왜 이렇게 만들 수 밖에 없었고, 더 나은 개선책이 있는지도 항상 고민해야한다.
다음 파트에서는 면접과제에 대한 회고를 작성해보려 한다.