Skip to content

185 feat: 포털 동기화 로직 SQS 기반 비동기 구조로 재설계 및 서버리스 구조로 전환 - #188

Merged
pp8817 merged 23 commits into
devfrom
feat/185
Mar 22, 2026
Merged

185 feat: 포털 동기화 로직 SQS 기반 비동기 구조로 재설계 및 서버리스 구조로 전환#188
pp8817 merged 23 commits into
devfrom
feat/185

Conversation

@pp8817

@pp8817 pp8817 commented Mar 22, 2026

Copy link
Copy Markdown
Member

참고 사항

  • dev shadow 스크래핑을 SQS 기반 비동기 구조로 전환하고 outbox dispatcher/스케줄을 보강했습니다.
  • Lambda 배포 워크플로 분리, 핸들러/패키징/Swagger 응답 수정, callback HMAC 및 DTO 호환성 보강으로 /internal/scrape-results 200 응답까지 확인했습니다.
  • 테스트: ./gradlew test
  • dev shadow에서 POST /portal/link → job succeeded 확인.

🔗 Related Issue

Closes #185

@pp8817
pp8817 requested a review from hoooonshub as a code owner March 22, 2026 09:14
@pp8817 pp8817 changed the title feat: dev shadow async scraping 185 feat: 포털 동기화 로직 SQS 기반 비동기 구조로 재설계 및 서버리스 구조로 전환 Mar 22, 2026
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces an asynchronous scraping mechanism for the dev shadow environment, leveraging SQS for job management and callbacks for result handling. It includes infrastructure changes for Lambda deployment, security enhancements for callback verification, and comprehensive testing to ensure reliability and idempotency.

Highlights

  • 비동기 스크래핑: dev shadow 스크래핑이 이제 SQS 기반 비동기 구조로 전환되어, 백엔드가 job 상태와 최종 저장의 source of truth 역할을 합니다.
  • Lambda 배포 워크플로: Lambda 배포 워크플로가 분리되었고, 핸들러/패키징/Swagger 응답 수정, callback HMAC 및 DTO 호환성이 보강되었습니다.
  • 테스트 확인: ./gradlew test를 통해 테스트가 완료되었으며, dev shadow에서 POST /portal/link → job succeeded를 확인했습니다.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Ignored Files
  • Ignored by pattern: .github/workflows/** (4)
    • .github/workflows/deploy-dev-ec2.yml
    • .github/workflows/deploy-dev-lambda.yml
    • .github/workflows/deploy-prod-ec2.yml
    • .github/workflows/deploy-prod-lambda.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이 PR은 포털 동기화 로직을 SQS 기반의 비동기 구조로 재설계하고, 서버리스 아키텍처로 전환하는 대규모 변경을 포함하고 있습니다. Outbox 패턴을 적용하여 안정적인 메시지 발행을 보장하고, 재시도 및 비활성 작업 처리 로직을 추가하여 시스템의 견고성을 크게 향상시킨 점이 인상적입니다. 또한, Lambda 배포를 위한 빌드 및 설정 변경과 함께 새로운 비동기 흐름에 대한 테스트 코드를 충실히 추가한 점도 훌륭합니다. 전반적으로 매우 완성도 높은 변경이라고 생각합니다. 다만, 코드의 유지보수성과 성능을 더욱 향상시키기 위해 몇 가지 개선점을 제안합니다. ObjectMapperSqsClient를 Spring Bean으로 관리하고, API 응답성 개선을 위해 Outbox 메시지 발행을 비동기적으로 처리하는 방안을 고려해 보시는 것을 추천합니다.

@pp8817
pp8817 merged commit b1db73f into dev Mar 22, 2026
1 of 3 checks passed
@pp8817
pp8817 deleted the feat/185 branch March 22, 2026 09:29
@pp8817 pp8817 self-assigned this May 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

서버리스(Lambda) + 비동기 스크래핑 전환 안정화

1 participant