앞으로의 목표 👍


  1. javascript 능력 및 고난도 알고리즘 풀이 능력
  2. Nest, Graphql등 최신 기술 스택 활용 능력
  3. 기초 미니프로젝트 포트폴리오
  4. 로그인, 결제기반 심화프로젝트 포트폴리오
  5. 배포를 위한 네트워크 및 CI/CD 배포자동화 능력
  6. 120% 백엔드 개발 지식

오늘부터 꾸준히 해야할 일 👍


  • 영타실력 늘리기
  • 단축키 사용 익숙해지기
  • 코드리딩 실력 키우기
  • 데일리 퀴즈
  • 포트폴리오 작성
  • 독스에 친숙해지기
  • MDN 보는 연습하기

오늘의 수업 👍



📝 마이크로서비스


  • Nestjs 폴더를 여러개 나누기 (DB도 같이 나눠야함)

▷ 모놀리식 아키텍처(Monolithic Architecture)

출처: https://www.nginx.com/blog/introduction-to-microservices/

  • 로그인, 파일 업로드, 결제 등 필요한 역할별로 개발을 하고, 개발이 완료되면 하나로 묶어서 배포한다.
  • 하나의 프로젝트를 개발하고 테스트하고 빌드하기 때문에 단순하다.

▶ 단점

  • 한 기능이 문제가 생기면 모든 기능이 엉켜버리는 문제가 발생할 수 있다.
  • 서비스가 점점 커질경우 하나의 프로젝트로 함께 묶는것이 점점 버거워지고 복잡해지게 된다.
  • 소스코드 전체를 빌드/배포 하려면 오래 걸린다.
    • ex) 게시판 API가 바뀌면 모든 소스코드를 다시 빌드/배포 해야한다.
  • 개발자를 채용하는 데 한정적이다. (NestJS이면 NestJS 개발자만 채용 해야함)

▷ 마이크로서비스 아키텍처(Microservice Architecture)

모놀리식 아키텍처의 단점을 보완하기 위해 나온 것이 마이크로서비스 아키텍처(Microservice Architecture)다.

출처: https://www.nginx.com/blog/introduction-to-microservices/

  • 한 프로젝트를 여러 작은 서비스로 분리하여 개발하고 운영, 배포하는 방법이다.
  • 여러 모듈로 분리했기 때문에 팀별로 독립적으로 개발할 수 있다.
  • 서비스 운영시, 만나게 되는 장애로부터 조금은 더 자유로워 질 수 있다.
  • 어떠한 기능에 장애가 생겨도 해당 API만 사용이 불가능하고, 다른 기능에는 문제없이 서비스를 운영할 수 있게 된다.

▶ 단점
전체적인 기술 복잡도가 증가한다. (작은 서비스보다 큰 서비스에서 많이 사용)

📝 Nginx를 API-Gateway로 하여 Main / Stock 서비스 분리


  • 다른 프레임워크 다른 API 쿼리 언어를 사용

  • NginX를 API-Gateway 용도로 사용하는 방법을 NginX의 Reverse Proxy라고 한다.

  • NginX의 Reverse Proxy의 환경 두가지를 알아보겠다.

📝 NginX Reverse Proxy


▷ 순방향 Proxy(Forward Proxy)

  • 특정 기업의 내부망 PC 혹은 서버들이 인터넷에 접속할 때 먼저 Proxy 서버를 거쳐서 인터넷에 연결되는 방식이다.

▶ 장점

  • 보안

    • In/Out bound 패킷에 대한 보안 정책(Content filtering등)을 적용할 수 있다.
  • 성능

    • 내부에 Cache를 유지하며 이미 한번 통신한 외부 서버의 이미지, 파일, 그 외 정보들을 저장할 수 있다.
    • 내부 사용자가 원격 서버에 접속 시, cache에 데이터가 있으면 물리적으로 먼 곳까지 갈 필요없이 Proxy 서버가 데이터를 제공하여 빠른 통신을 지원한다.

▷ 역방향 Proxy (Reverse Proxy)

  • 외부에서 내부 서버가 제공하는 서비스 접근 시, Proxy 서버를 먼저 거쳐서 내부 서버로 들어오는 방식이다.
    ▶ 장점

  • 보안

    • 모든 접속은 Reverse Proxy 서버에게 들어오며, Reverse Proxy는 요청에 맵핑되는 내부 서버의 정보를 알고 요청을 넘겨준다.
    • 따라서 내부 서버의 정보를 외부로부터 숨길 수 있다.
  • 로드밸런싱

    • Proxy 서버가 내부 서버의 정보를 알고 있으므로 로드밸런싱을 통해 부하 여부에 따라 요청을 분배 할 수 있다.

📝 메모


보통 인가는 게이트웨이에서 처리한다.
NginX에서는 인가까지 처리하기는 한계가 있다.
그래서 NginX+를 사용한다.

yarn.lock에 있는 버전이 도커를 실행할 때 그 버전으로 다운받게 한다.
애매하면 yarn.lock을 삭제하고 다시 yarn install을 하면 마지막에 다운받은 버전이 yarn.lock에 들어가게 되기 때문에 삭제하고 다시 yarn install을 하는 것을 추천한다.

오늘의 마무리 👍



  • 복습
  • github 공부
  • 블로그 포스팅
  • 데일리 퀴즈
  • 알고리즘 문제 풀기

항상 겸손한 자세로 배우면서 성장하자, 할 수 있다!! 💪


출처 : 코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글