본문 바로가기
📝 회고/✅ 22년 회고

[일일 회고] 22.05.23 - "AWS VPC, 숙박앱 프로젝트와 Events storming, Boris diagram, Snap-E"

by kukim 2022. 5. 23.

📚 배운 것

AWS VPC

코드스쿼드 호눅스의 마스터 클래스 시간에 Network와 AWS의 VPC에 대해 이론과 실습을 배웠다.

 

CIDR(Classless Inter-Domain Routing)

CIDR는 클래스 없는 도메인 간 라우팅 기법으로, 기존 네트워크 클래스(A, B, C, ...)를 대체하였다. 기존 네트워크 클래스의 고정된 네트워크/호스트 개수를 유동적으로 변경하게 만들 수 있게 prefix를 커스텀 설정할 수 있다. 기존 네트워크 클래스를 대체했다고 생각 못하고 있었다.

 

VPC

AWS - VPC(Virtual Private Cloud)이란? : AWS에서 독립된 가상 네트워크 만들기 글을 쓰며 VPC 기본은 요약했었다. 부족했던 내용을 호눅스가 채워줬다.

 

NAT을 사용하여 private 서브넷의 ec2가 외부와 통신하는 3가지 방법

 

1. NAT 게이트웨이 서비스 사용

AWS가 편하게 NAT을 서비스로 만들었다. 과거엔 2번 방법으로 직접 NAT을 ec2로 만들었지만 설정하기 어렵고 불편했다. 넷플릭스가 불편해 직접 고가용성 NAT을 만들었고, 이에 AWS가 서비스로 NAT 게이트웨이를 만들었다고 한다.

 

2. NAT 인스턴스를 직접 만들어 사용

- ec2의 방화벽 옵션을 변경한다 (MASQUERADE)

- 보안 그룹을 설정한다.

- 라우팅 테이블에 NAT을 추가한다

 

3. private 서브넷은 항상 외부와 연결할 필요가 없으니 잠깐 public 인터넷 게이트웨이 + 탄력적 IP를 연결한다.

 

 

ssh key forwarding

private 서브넷의 ec2에 ssh로 연결하려면 어떻게할까?

동일 VPC의 public subnet ec2에 ssh로 접속한다. 동일 네트워크 간엔 연결되어 있으니 public subnet ec2에서 private subnet ec2의 pem 키를 가지고 접속한다. 이때 public subnet ec2 자체에 pem 키를 저장하고 있으면 보안 문제가 발생한다. pubic subnet ec2가 뚫리면 private pem 키를 가지고 있기 때문이다. 이때 ssh key forwarding 기술을 사용하여 public subnet ec2에서 pem 키를 가지고 있지 않아도 접속할 클라이언트 PC에서 pem키를 한 번에 관리하여 보다 안전하게 접속할 수 있다. 

 

+a) 

- 코쿼 멤버 새미의 질문과 호눅스의 답변 : AWS ec2에서 apt, apt-get 을 사용해 패키지를 설치하면 자체 AWS망 패키지 관리자 서버와 연결되어 패키지들이 설치된다.

이때 private 서브넷은 외부와 연결된 네트워크가 없어도 내부망을 사용해 패키지를 다운 받을 수 있을 거 같지만 불가능하다.

 

- AWS 서비스인 RDS를 사용하면 NAT 연결하지 않아도 연결을 손쉽게 할 수 있다.

숙박앱 프로젝트

프로젝트를 시작했다. 이번에는 iOS 2명, BE 2명이 3주간 모여 Airbnb와 유사한 숙박 앱을 개발한다. (저장소)

BE 기술 스택은 아래와 같다.

- spring security를 사용하지 않고 Github OAuth + JWT로 로그인 구현

- JPA

- 클라이언트 개발자를 위한 Mockup API 사용

- Swagger

- Elasticsearch를 활용한 검색

- 배포 (VPC를 활용한 네트워크 구분, CI/CD 활용 자동화 배포(Github Actions + Docker)

 

 

Events storming, Boris diagram, Snap-E

한 달 전 호눅스의 추천으로 Pivotal - 이정인 매니저님의 마이크로서비스 개발을 위한 Domain Driven Design 영상을 감명 깊게 봤다. MSA와 DDD를 하겠어! 라기 보단 영상의 Events storming, Boris diagram, Snap-E 과정을 거치며, 와! Domain, 요구사항 분석을 이렇게도 할 수 있구나? 를 배웠다. 이번번 프로젝트에 적용하고 싶었고 다행히 팀원(제리)도 동일한 생각을 가지고 있어 어려움 없이 첫날 연습해 볼 수 있었다. 영상에서 오랜 기간 실무자, 개발자 모두 모여 함께 수정한다고 했다. 초보자인 우리는 당연히 문제가 많았다. 하지만 기존과는 다르게 App의 전체 흐름을 살펴볼 수 있었고 Aggregate의 관점을 조금이나마 바라볼 수 있었다.

 

Events storming : User
Events storming : 숙소
Snap-E : User

댓글