Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE-INFRA] 데이터 업데이트 자동화 파이프라인 생성 #375

Open
jongmee opened this issue Oct 18, 2024 · 3 comments
Open

[BE-INFRA] 데이터 업데이트 자동화 파이프라인 생성 #375

jongmee opened this issue Oct 18, 2024 · 3 comments
Assignees
Labels
BE_INFRA 🚧 백엔드 인프라

Comments

@jongmee
Copy link
Contributor

jongmee commented Oct 18, 2024

✨ Description

  • 변경 사항이 있는 데이터를 파싱하고 운영 db에 업데이트하는 과정을 자동화한다.

✨ Task 초안

1. 우리가 새로 파싱한 json을 S3에 업로드

  • 방법1: 수동 업로드 (json 파일이 도감별로 하나씩만 존재하니까 엄청 수고스럽지는 않음)
  • 방법2: 우리 파싱 레포에서 github action 돌려서 API gateway 사용해서 s3에 업로드

(제 의견은 일단 1번으로 했으면 합니다)

2. 람다함수 호출

Amazon S3 트리거를 사용하여 Lambda 함수 호출

3. 람다함수에서 데이터 업데이트

  • 몽고 클라이언트 (파이썬이면 pymongo)로 데이터 삭제 후 bulk insert
  • 접근 권한 설정
    1. S3에서 JSON 파일을 가져오기 위해 s3:GetObject 권한을 가진 역할(IAM)을 Lambda에 연결
    2. Lambda 함수가 VPC의 private subnet에 있는 MongoDB에 접근할 수 있도록 VPC 설정

사용자 경험

Primary DB를 업데이트 하는 기간

  • readPreference를 secondaryPreferred로 설정했으므로 secondary 노드로 읽기 요청이 간다.
  • secondary 노드에 장애가 발생해 primary 노드가 읽기 요청까지 받아야 하는 경우를 대비해 MongoDB transaction을 majority로 설정하고 delete와 insert를 atomic 작업으로 묶을 수 있다. (majority로 일관된 읽기까지 가능)

Secondary DB에 작업을 복제하는 기간

  • 복제는 비동기로 이루어진다. 이 기간 동안 요청은 이전 데이터를 일관되게 읽는다.

읽기 작업이 세컨더리를 대상으로 하고 "local" 또는 "majority"의 읽기 고려 수준으로 구성된 경우, 복제 배치가 적용되는 세컨더리에 읽기가 수행될 때 데이터의 WiredTiger 스냅샷에서 읽습니다. 스냅샷에서 읽기는 데이터의 일관된 뷰를 보장하고, 잠금 없이 진행 중인 복제와 동시에 읽기를 수행할 수 있도록 합니다. (출처)

  • 우리는 현재 따로 트랜잭션을 사용하지 않아 읽기 고려가 local입니다!

✨ Time

  • 레벨 5 초반에 완성했으면 좋겠네요 😉

디코에서 말했듯이 무조건 하자, 이 방식으로 하자 가 아니라 요런 방법은 어떨까? 지금 방식이 번거롭고 우리 서비스에 맞는 최적화 작업을 하는게 재밌어보인다면 한 번 고려해주셨음 합니다 😊 위 방식, 설명도 제 생각이 많이 들어가 있어서 다른 의견도 받고 방식도 변경할 수 있으면 좋겠습니다 ! 코멘트 혹은 디스커션 같이 달아봐요 ~!

그리고 한다면 하고 싶은 사람들 다같이 했음 좋겠습니다!

@jongmee jongmee added the BE_INFRA 🚧 백엔드 인프라 label Oct 18, 2024
@unifolio0
Copy link
Contributor

제가 이해한 내용은 s3에 json을 업로드하면 람다를 통해서 도커 이미지를 다시 푸시할 필요없이 db에 바로 insert한다고 이해했는데 맞을까요?

전 언제든 찬성입니다!😊
s3에 업로드하는 것도 이전에 종이가 포켓몬 이미지를 s3에 업로드 시킨 방법을 응용하면 직접할 필요없이 프로그램 실행하는 거로 업로드 가능할 것 같아요!

@jinchiim
Copy link
Contributor

전 찬성이예요 하고 싶슴다

@jongmee
Copy link
Contributor Author

jongmee commented Oct 24, 2024

종이가 포켓몬 이미지를 s3에 업로드 시킨 방법

오 비토가 말한 이 방식이 뭔지 궁금해요 👀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE_INFRA 🚧 백엔드 인프라
Projects
None yet
Development

No branches or pull requests

4 participants