Skip to content

docs: 프론트엔드에서 원자성 보장하기 (feat. 대용량 데이터 배치 업로드)#12

Merged
toothlessdev merged 10 commits intomainfrom
publish
Mar 21, 2026
Merged

docs: 프론트엔드에서 원자성 보장하기 (feat. 대용량 데이터 배치 업로드)#12
toothlessdev merged 10 commits intomainfrom
publish

Conversation

@toothlessdev
Copy link
Copy Markdown
Owner

No description provided.

@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!

이 풀 리퀘스트는 대용량 데이터 업로드 시 프론트엔드에서 원자성을 보장하는 전략을 다루는 새로운 블로그 게시물을 추가하는 것을 주요 내용으로 합니다. 특히 413 Payload Too Large 오류를 해결하기 위한 이미지 압축, API 청크 분할, 사용자 경험 기반의 부분 성공 복구 로직 구현 경험을 공유합니다. 이와 함께 Storybook MCP 관련 기존 블로그 게시물이 삭제되었으며, 게시물 목록 메타데이터가 업데이트되었습니다.

Highlights

  • 새로운 블로그 게시물 추가: 프론트엔드에서 대용량 데이터 배치 업로드 시 원자성을 보장하는 전략에 대한 새 블로그 게시물이 추가되었습니다. 이 게시물은 413 Payload Too Large 오류 해결을 위한 이미지 압축, API 청크 분할, 부분 성공 복구 로직 구현 경험을 다룹니다.
  • 기존 블로그 게시물 제거: Storybook MCP를 활용한 컴포넌트 문서화 및 AI Context 관련 블로그 게시물이 제거되었습니다.
  • 게시물 메타데이터 업데이트: 새로운 게시물을 포함하고 제거된 게시물을 반영하도록 data/posts.json 파일의 게시물 목록 메타데이터가 업데이트되었습니다.
  • 기타 파일 변경: contents/posts/Web/image-format/index.md에서 깨진 내부 링크가 제거되었고, package.jsonpackageManager 필드가 추가되었습니다.

🧠 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/** (1)
    • .github/workflows/deploy.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.

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

Code Review

이 PR은 대용량 데이터 배치 업로드 시 원자성을 보장하는 방법에 대한 새로운 기술 블로그 포스트를 추가하고, 관련하여 posts.json 데이터 파일을 업데이트합니다. 또한, 일부 오래된 포스트를 제거하고 package.jsonpackageManager를 명시하여 개발 환경의 일관성을 높이는 변경 사항도 포함되어 있습니다. 전반적으로 블로그 콘텐츠를 관리하고 개선하는 좋은 업데이트로 보입니다. 몇 가지 사소한 오타 수정과 코드 개선 제안을 리뷰 코멘트로 남겼습니다.

Comment thread contents/posts/React/batch-api-atomic/index.md Outdated

<br/>

### 2️⃣ 요청청킹 + Batch 업로드
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

'요청청킹'은 '요청 청킹'으로 띄어쓰기를 하는 것이 더 자연스럽습니다.

Suggested change
### 2️⃣ 요청청킹 + Batch 업로드
### 2️⃣ 요청 청킹 + Batch 업로드


> 중간에 일부 요청만 실패하면 어떻게 될까?

예를들어,
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

'예를들어'는 '예를 들어'로 띄어쓰기를 하는 것이 올바른 표현입니다.

Suggested change
예를들어,
예를 들어,

이런 상황이 발생하면, 서버에는 이미 10명의 원아 데이터만 등록된 상태가 됩니다. <br>
이는 흔히 말하는 원자성(Atomicity)을 깨는 구조입니다.

#### 1. 실패시 전체 롤백 (All or Nothing)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

'실패시'는 '실패 시'로 띄어쓰기를 하는 것이 올바른 표현입니다.

Suggested change
#### 1. 실패시 전체 롤백 (All or Nothing)
#### 1. 실패 시 전체 롤백 (All or Nothing)

Comment on lines +211 to +213
const successIndices = results
.map((result, index) => (result.status === "fulfilled" ? index : null))
.filter((index) => index !== null);
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

mapfilter를 연달아 사용하는 대신 flatMap을 사용하면 코드를 더 간결하게 작성할 수 있고, 중간 배열 생성을 피할 수 있어 더 효율적입니다.

Suggested change
const successIndices = results
.map((result, index) => (result.status === "fulfilled" ? index : null))
.filter((index) => index !== null);
const successIndices = results.flatMap((result, index) => (result.status === "fulfilled" ? [index] : []));

}
```

이후, ReactHookForm 에서 이 에러를 잡아서 성공한 항목은 폼에서 제거하고, 실패한 항목만 그대로 남깁니다
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

라이브러리 이름인 'React Hook Form'을 따라 'ReactHookForm'을 'React Hook Form'으로 띄어쓰는 것이 가독성과 일관성에 더 좋습니다.

Suggested change
이후, ReactHookForm 에서 이 에러를 잡아서 성공한 항목은 폼에서 제거하고, 실패한 항목만 그대로 남깁니다
이후, React Hook Form에서 이 에러를 잡아서 성공한 항목은 폼에서 제거하고, 실패한 항목만 그대로 남깁니다

@toothlessdev toothlessdev merged commit d31e653 into main Mar 21, 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.

1 participant