[팀프로젝트]3주차

와우 벌써 3주차라니. 우리팀은 2주 단위였던 스프린트를 1주 단위로 줄이고 회고하는 방식으로 변경했다. 다음 데모데이 까지 핵심기능 개발이 목표인데 좀 더 효율적으로 보인다~ 

 

깃 서브모듈

  • 하나의 저장소 안에 있는 또 다른 별개의 저장소

서브모듈 시작하기

  • Git에 팀 Operation을 만들고, Private 레포지토리를 만들었다.
  • 해당 레포지토리를 아래 명령어로 서브모듈로 만들어준다
git submodule add {내가 서브모듈로 사용하고 싶은 레포의 URL}
  • 서브모듈을 포함한 프로젝트 Clone
    • 비어있다.. 
    • 아래 명령어를 실행해서 git 저장소를 초기화 해주고, 원격 저장소에서 파일을 가져온다.
git submodule init
git submodule update

https://sgc109.github.io/2020/07/16/git-submodule/

 

Git 의 서브모듈(Submodule)

Git 의 서브모듈(Submodule) 이란 하나의 저장소 안에 있는 또 다른 별개의 저장소이다. 보통 다른 원격 저장소를 가져와(pull) 서브모듈로 사용하게 된다. 본 포스트에서는 Git 의 서브모듈에 대해 알

sgc109.github.io

 

Jasypt보다 좋아진 점

  • 팀원들과 공유가 편하다
  • 팀원들 간 수정이 편하다..!
  • Jaspyt으로는 logger설정 xml에 쓸 슬랙 Web-hook 토큰이 복호화가 안된다. 스프링 컨텍스트를 부팅할 때 Jasypt으로 암호화된 것들을 복호화 해준다고 하는데.. ㅜㅜ 그래서 Web-hook 토큰을 VM 옵션으로 주고 있었는데 이런 부분을 편하게 관리 할 수 있었다
  • 자바, 스프링 관련 설정말고 여러 가지로 활용이 가능할 듯 보인다. 

 

S3

프로필 사진 등록, 제거 API구현 에서 프로필사진에 대한 스토리지를 AWS S3를 사용하기로 하였다. 이는 후에 배너관리 할 때도 유용하게 사용할 것 같다.

IAM

  • AWS 서비스와 리소스에 대한 액세스를 안전하게 관리하는 기능
accesskey, secretkey 발급은 해드릴 수 없어요. ec2-s3-deploy 역할을 활용해주세요. ec2 페이지에서 우측 상단에 작업 > 보안 > IAM 역할 수정 으로 진행하면 됩니다.

 

IAM의 역할(Role)

  • AWS에서 할 수 있는 작업과 할 수 없는 작업을 결정하는 것과 리소스에 대한 액세스를 부여하는 권한 세트
  • 서버로 사용 중인 EC2에서 S3를 사용하기 위해서는 IAM역할을 추가 해야 했다.

 

CloudFront

  • CloudFront는 AWS에서 제공하는 CDN 기능
퍼블릭 오픈도 불가합니다. 정적 리소스 읽기 작업은 Cloudfront를 통해 접근하도록 구성하시고, 쓰기 작업은 ec2-s3-deploy 역할이 부여된 인스턴스에서 가능합니다. (참고로 이 역할에 cloudwatch 권한도 부여해두었어요)

 

  • 쓰기작업은 EC2에서 하고, 읽기 작업은 CloudFront를 통해 수행
  • 퍼블릭 오픈이 되어있지 않아서 CloudFront로 읽기 수행 시에는 Public access 차단 설정이 동작하지 않도록 해야함
    • CloudFront 생성시 Origin으로 S3연결
    • S3 Access 정책 중 "use OAI" 선택
    • Origin aceess identities 생성 후 연결
    • S3 버킷의 권한 탭에서 버킷 정책 설정 JSON 형식
  • CloudFront를 사용해서 S3를 읽어오는 과정은 현구막 블로그를 참조함

 

https://hyeon9mak.github.io/access-s3-through-cloudfront/

 

CloudFront를 통해 S3 액세스 하기

☁️ Summary Amazon S3(Simple Storage Service)는 간편한 데이터 관리 및 액세스 제어를 제공해주는 저장소다. ‘무한대로 늘어나는 외부 저장소 + 간편한 액세스 제어’ 정도로 생각하면 편할 것 같다.

hyeon9mak.github.io

https://dev.classmethod.jp/articles/aws-cli-cloudfront-oai-kr/

 

AWS CLI로 Amazon CloudFront OAI (Origin Access Identity) 설정하기 | DevelopersIO

AWS CLI을 이용하여 CloudFront Distribution에 OAI를 설정하는 방법에 대해 다루어 보았어요.

dev.classmethod.jp

 

OAI란 (Origin Access ID)

  • Amazon CloudFront와 함께 콘텐츠를 제공하기 위해 Amazon S3 버킷을 Origin으로 사용하는 경우, 사용자가 Amazon S3 URL 대신 CloudFront URL을 통해 콘텐츠에서 액세스하도록 요구하기 위해 사용하는 가상 자격 증명.

 

MultipartFile 테스트

  • 스프링에서 MultiPartFile을 테스트 할 수 있는 MockMultipartFile을 제공한다.
//given
MockMultipartFile file = new MockMultipartFile("multipartFile", "testImage1.jpg",
	ContentType.IMAGE_JPEG.getMimeType(), "testImageBinary".getBytes());

 

  • MockMultipartFile의 첫번째 인자인 "multipartFile"이게 Controller에서 MultipartFile을 받는 인자의 이름과 같아야 한다..

 

  • 또한 MultipartFile요청을 모킹할 수 있는 MockMvcReqeustBuilders.multipart를 제공한다.
 mockMvc.perform(multipart("/profile")
                .file(file))
                .andExpect(status().isCreated())
                .andExpect(jsonPath("profileUrl").value(url))
                .andDo(document("profile",
                        preprocessRequest(prettyPrint()),
                        preprocessResponse(prettyPrint())))
        ;

 

아임포트

  • 결제 모듈로 아임포트를 붙히기로 했다.
  • 클라이언트로 부터 받은 결제 정보와 직접 아임포트 API로 실 결제정보를 비교하는 부분이 흥미로웠다.
  • 결제중, 결제실패, 결제 대기 등 상태 값이 많았는데 ENUM으로 관리하니 좋았다.

 

 

그래서 3주차는..

  • 월요일에 두번째 데모데이 발표를 했다.
  • 서브모듈로 비밀 데이터를 관리, 공유 하도록 하였다.
  • S3로 프로필 이미지 업로드 API를 구현했다.
  • 결제 모듈인 아임포트를 사용해 보았고, 이것을 우리 결제 도메인에 적용하였다!
    • Payment 도메인이 추가되었다~ 👏

'우아한테크코스' 카테고리의 다른 글

배포인프라 수업 다시보기  (0) 2021.08.04
[팀프로젝트]4주차  (0) 2021.07.27
[팀프로젝트] 2주차  (0) 2021.07.13
[팀프로젝트] 1주차  (5) 2021.07.09
SpringBoot Security 없이 Oauth2.0 로그인 Naver편  (8) 2021.07.06

댓글



Designed by JB FACTORY