2024.08.07.수.TIL 내일배움캠프 79일차 <최종프로젝트Day15>

김기남·2024년 8월 7일
post-thumbnail

안녕하세요, 오늘은 기술면접 준비내용과 최종프로젝트 진행상황을 정리해보았습니다.

AWS S3, EC2를 사용하는 이유와 사용 경험에 대해서 답변해주세요.

AWS S3를 사용하는 이유

  • 확장성: S3는 거의 무한한 확장성을 제공해 대규모 데이터 저장이 가능합니다.
  • 내구성: 99.999999999%의 내구성을 제공하여 데이터 손실 위험이 거의 없습니다.
  • 비용 효율성: 사용량에 따른 비용 구조로 효율적인 비용 관리가 가능합니다.
  • 접근성: 전 세계 어디서나 데이터에 접근할 수 있어 편리합니다.
  • 보안: 다양한 보안 기능과 규정 준수 옵션으로 데이터 보호가 가능합니다.

AWS EC2를 사용하는 이유

  • 유연성: 다양한 인스턴스 유형과 크기를 선택해 맞춤형 컴퓨팅 환경을 구축할 수 있습니다.
  • 확장성: 필요에 따라 쉽게 인스턴스를 확장하거나 축소할 수 있습니다.
  • 통합: 다른 AWS 서비스와 원활하게 통합되어 종합적인 클라우드 솔루션을 제공합니다.
  • 관리 용이성: 관리형 서비스로 인프라 유지 보수 부담이 적습니다.
  • 비용 관리: 사용한 만큼만 지불하는 비용 구조로 경제적입니다.

AWS S3 사용 경험

  • 백업 및 복구: 중요한 데이터를 정기적으로 S3에 백업하여 손쉽게 복구 가능했습니다.
  • 정적 웹사이트 호스팅: S3 버킷을 사용해 정적 웹사이트를 간편하게 호스팅했습니다.
  • 로그 저장: 애플리케이션 로그를 S3에 저장해 분석 및 모니터링에 활용했습니다.
  • 데이터 아카이빙: 오래된 데이터를 저렴하게 보관하는 데 사용했습니다.
  • 멀티파트 업로드: 대용량 파일을 빠르고 안정적으로 업로드했습니다.

AWS EC2 사용 경험

  • 웹 서버 호스팅: EC2 인스턴스에서 웹 서버를 설정해 애플리케이션을 배포했습니다.
  • 자동 스케일링: 트래픽 증가 시 자동 스케일링을 설정해 가용성을 높였습니다.
  • 개발 및 테스트 환경: 다양한 환경을 신속하게 구성해 개발과 테스트를 진행했습니다.
  • 데이터베이스 서버 운영: RDBMS를 EC2에 설치해 데이터베이스 서버를 운영했습니다.
  • VPN 설정: EC2를 통해 보안이 필요한 애플리케이션에 VPN을 설정해 사용했습니다.

정렬 알고리즘에 대해서 아는대로 설명해주세요.

정렬 알고리즘은 데이터를 특정 순서(오름차순이나 내림차순 등)로 정렬하는 알고리즘을 말합니다. 주요 알고리즘으로는 다음이 있습니다:

  • 버블 정렬: 인접한 요소를 비교하고 교환하여 정렬하는 방식으로, 구현이 간단하지만 시간 복잡도가 O(n^2)로 비효율적입니다.
  • 선택 정렬: 가장 작은 요소를 선택해 순서대로 정렬하는 방식으로, 시간 복잡도는 O(n^2)입니다.
  • 삽입 정렬: 요소를 순서대로 정렬된 부분에 삽입하는 방식으로, 거의 정렬된 데이터에 효율적이며 시간 복잡도는 O(n^2)입니다.
  • 병합 정렬: 리스트를 분할하고 병합하여 정렬하는 재귀적 알고리즘으로, 시간 복잡도는 O(n log n)입니다.
  • 퀵 정렬: 피벗을 기준으로 분할 정렬하는 방식으로, 평균 시간 복잡도는 O(n log n)지만 최악의 경우 O(n^2)입니다.
  • 힙 정렬: 힙 자료 구조를 이용한 정렬 방식으로, 시간 복잡도는 O(n log n)입니다.

최종프로젝트

어드민 챌린지 단건조회 API 명세서 추가
어드민 service User loginUser 로 매개변수명 수정하여 대상 명확하게 표시
어드민 전체조회(유저,인증요청,챌린지) 페이지네이션 로직 수정

rds 사용중인데 과금문제가 있다는 이슈발생
박성원 튜터님 rds는 비용이 ec2의 10배 / rds가 제공하는 기능은 우리 프로젝트에 오버스펙 비추
ec2에 mysql 설치해서 사용하는걸 추천
그러나 동시성제어 등의 db 관련 기술을 구현하고 공부하겠다면 rds 추천
ec2 3개로 구현 백 / 프론트 / db 이게 가장 기본되는 형태

레디스와 mysql 성능 비교 / 포인트 랭킹순으로 전체리스트 조회
db 100개 100ms 1000ms
db 500개 834ms 1680ms

  1. Local에서 Docker File로 Docker Image를 만든다.
  2. Docker Image를 Docker Hub에 Push 한다.
  3. EC2에서 docker image를 pull 받고 실행한다.
    도커 로그인
    도커 복사한거 붙여넣기
    이미지를 알아서 받음
    ./gradlew clean build
    history
    docker images
    docker build -t challenger .
    docker run -d -network my_network -p 8080:8080 fe6d0ac003e8
    docker ps
    ec2 도커컴포즈 먼저 이거저거 / 도커 네트워크 / 도커 네임
profile
새로운 시작~!

0개의 댓글