기술 면접 질문(2)

cptkuk91·2022년 8월 8일
1

Algorithm

목록 보기
50/161

1. REST API에 대해서 설명해주세요.

REST 아키텍처의 제약 조건을 준수하는 프로그래밍 인터페이스를 뜻합니다.
HTTP URI를 통해 Resource를 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.

2. Swagger에 대해서 알고 계신가요.

API 설계, 개발, 문서화, 테스트를 통해 API Spec을 명세화, 관리할 수 있는 프레임워크로 알고 있습니다. API 명세화, 관리를 위해 Gitbook을 사용했고, Swagger 사용 경험은 없습니다.

  • API 사용 방법을 사용자에게 알려주는 문서
  • Swagger란 개발한 REST API를 편리하게 문서화 해주고, 이를 통해 관리 및 제 3의 사용자가 편리하게 API를 호출해보고 테스트할 수 있는 프로젝트입니다.
    (주의 사항으로는 운영환경과 같은 외부에 노출되면 안되는 곳에서 사용할 때 주의가 필요합니다.)

3. AWS 배포 과정에 대해서 설명하시오.

  • EC2: AWS 클라우드에서 확장식 컴퓨팅을 제공합니다. 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 가능합니다. 변동 사항에 따라 신속하게 규모 확장/축소가 가능하여 서버 트래픽 예측 필요성이 줄어듭니다.

ELB: 로드밸런서의 이점은 트래픽 부하를 가상 서버와 같은 다수의 컴퓨팅 리소스로 분산시켜 모니터링 프로세스를 구축할 수 있습니다. 컴퓨팅 리소스가 주요 작업에만 집중할 수 있도록 암호화/복호화 작업을 로드밸런서로 넘길 수 있습니다. (사용 경험은 없다.)

RDS: AWS 클라우드 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 서비스입니다. 표준 관계형 데이터베이스에 필요한 용량을 제공하면서 비용이 효율적이고 크기 조정이 가능하고 데이터 베이스 관리를 위한 공통작업까지 관리합니다.

S3: 인터넷 스토리시 서비스입니다. 이미지나 동영상과 같은 파일을 저장하고 사용자가 요청하면 제공해주는 서비스입니다. 또한 웹 서비스의 인터페이스 제공에 있어 높은 확장성과 신뢰성을 갖춰 경제적인 데이터 스토리지입니다.

CloudFront: 동적 웹 컨텐츠를 사용자에게 더 빨리 배포할 수 있도록 지원하는 웹 서비스입니다. 데이터센터의 글로벌 네트워크를 통해 컨텐츠를 제공합니다.

Route53: AWS에서 제공하는 DNS 입니다. 도메인을 IP로 변환하여 IP 네트워크 통신하여 목적지 IP를 찾아가는 과정입니다.

4. Serverless Architecture에 대해서 설명해주세요.

직역하면 서버가 없다는 의미지만, 사실상 서버가 없는 건 아닙니다. 특정 작업을 수행하기 위해서 컴퓨터를 혹은 가상머신에 서버를 설정하고, 이를 통해 처리하는 것이 아님을 의미합니다. 대신 BaaS(Backend as a service) 혹은 FaaS(Function as a Service)에 읜존해 작업을 처리합니다. BaaS 대표는 Firebase가 있고, FaaS로는 AWS Lambda, Azure, Google Cloud Function이 있습니다.

  • BaaS의 장점과 단점
    클라이언트 위주의 코드로 구현이 됩니다. 가격면에 있어서 소규모 프로젝트의 경우에는 매력적이지만, 규모가 커지면 지출 비용이 오히려 커지는 단점이 있습니다. 또한 복잡한 쿼리가 불가능합니다. 따라서 데이터베이스 모델을 비정규화하여 사용하는 것이 좋습니다.

  • FaaS의 장점과 단점
    서버를 준비하고 하루종일 동작시키는 게 아니라, 필요할 때만 함수가 호출되어 처리되며 함수가 호출된 만큼 비용이 들기 때문에 절약할 수 있습니다. 또한 확장성 면에서 뛰어납니다. (다양한 트래픽에 유연한 대응을 할 수 있게 AWS Auto Scaling과 같은 기술을 사용)

단점으로는 모든 코드를 함수로 쪼개 작업해야합니다. AWS에서는 최대 1500MB의 메모리까지 사용 가능하고 처리시간은 300초까지 가능합니다. 따라서 메모리 사용과 처리 시간을 고려해 함수를 작성해야 합니다.

5. Github / Git과 관련된 사용 경험과 아는 부분에 대해서 설명해주세요.

Git은 분산 버전관리 시스템으로 컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간 파일에 대한 작업을 조율하는데 사용됩니다. 즉 여러명의 개발자가 하나의 소프트웨어 개발 프로젝트에 참여할 때 소스코드를 관리하는데 주로 사용됩니다.

  • branch: 현재 상태를 복사하여 Branch에서 작업한 후 완전하다 싶을 때 Merge를 하여 작업을 합니다.

  • Merge: 다른 Branch 내용을 현재 Branch로 가져와 합치는 작업을 의미합니다.

  • Working Area: 저장소 기준 작업자의 현재 시점

  • Staging Area: 저장소에 커밋하기 전 커밋을 준비하는 위치

  • Commit: 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업

6. AdonisJS 사용 경험 또는 아는 부분에 대해서 설명해주세요.

AdonisJS 사용 경험은 없습니다. Node.js, Express 보다 깔끔한 코드를 원하거나 새롭지만 반복적인 기능을 넣기 위해 효율적인 프레임워크입니다.

AdonisJS 장점

  • 직관적입니다.
  • 문서화가 완벽합니다.
  • 기본적인 웹 보안기능이 훌륭합니다.
  • ORM(Object Relational Mapping)을 사용하기에 적합하다. (본인 Sequelize 사용)

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글