0Pricing
React Academy · 강의

아일랜드 아키텍처 패턴

대부분 정적인 HTML을 제공하고 대화형 위젯만 수화해 상호작용 가능 시간을 최적화합니다.

아일랜드 아키텍처 패턴은(는) CoddyKit의 무료 React Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 React Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

아일랜드 아키텍처란 무엇입니까

아일랜드 아키텍처는 대부분 정적인 HTML과 독립적으로 하이드레이션되는 작은 대화형 영역(아일랜드)을 함께 제공합니다. 페이지 대부분에는 JS가 없고, 상호작용이 필요한 위젯만 리액트 아일랜드가 됩니다.

해결하는 문제

기존 SSR은 페이지의 90%가 정적 콘텐츠(헤더, 텍스트, 이미지)여도 전체 페이지를 하이드레이션합니다. 아일랜드는 대화형 부분만 하이드레이션하므로 브라우저로 전송되는 JavaScript를 크게 줄입니다.

핵심 개념

페이지를 정적인 HTML의 바다로, 그 안에 상호작용의 아일랜드가 떠 있다고 생각해 보십시오. 각 아일랜드는 독립적으로 하이드레이션되며 필요하다면 서로 다른 프레임워크를 사용할 수 있습니다.

아일랜드 프레임워크로서의 Astro

아스트로는 아일랜드 아키텍처를 대중화했습니다. 컴포넌트에는 기본적으로 JS가 없습니다. 하이드레이션을 선택하려면 client:* 지시문을 추가하십시오.

---
import Header from './Header.astro';      // static — 0 JS
import SearchBar from './SearchBar.jsx';  // island — hydrated
import Footer from './Footer.astro';      // static — 0 JS
---
<Header />
<SearchBar client:load />   <!-- hydrate immediately -->
<SearchBar client:idle />   <!-- hydrate when browser is idle -->
<SearchBar client:visible /> <!-- hydrate when scrolled into view -->
<Footer />

하이드레이션 지시문

아일랜드 프레임워크는 세분화된 하이드레이션 시점을 제공합니다. client:load(즉시), client:idle(requestIdleCallback), client:visible(IntersectionObserver), client:media(CSS 미디어 쿼리)를 사용할 수 있습니다.

Next.js에서 아일랜드 구현하기

Next.js 앱 라우터는 서버/클라이언트 컴포넌트 분할을 통해 아일랜드를 근사합니다. 서버 컴포넌트 = 정적 콘텐츠, 클라이언트 컴포넌트 = 아일랜드입니다.

// Most of the page is a Server Component (no JS sent)
export default async function ProductPage() {
  const product = await getProduct();
  return (
    <article>
      <h1>{product.name}</h1>
      <p>{product.description}</p>
      {/* Only the interactive button is a Client Component island */}
      <AddToCartButton product={product} />
    </article>
  );
}

리액트 지연 로딩으로 아일랜드 수동 구현하기

전용 프레임워크가 없어도 페이지가 로드된 후에 대화형 컴포넌트만 지연 로딩하면 아일랜드를 구현할 수 있습니다.

const HeavyWidget = lazy(() => import('./HeavyWidget'));

function Page() {
  const [show, setShow] = useState(false);
  const containerRef = useRef(null);

  useEffect(() => {
    const obs = new IntersectionObserver(([entry]) => {
      if (entry.isIntersecting) setShow(true);
    });
    obs.observe(containerRef.current);
    return () => obs.disconnect();
  }, []);

  return (
    <div ref={containerRef}>
      {show && <Suspense fallback={null}><HeavyWidget /></Suspense>}
    </div>
  );
}

장단점

장점: JS 최소화, 빠른 TTI, 정적 콘텐츠를 적극적으로 캐시할 수 있습니다. 단점: 아일랜드는 상태를 쉽게 공유할 수 없고(서로 다른 JS 컨텍스트), 일반적인 SPA보다 아키텍처가 복잡합니다.

아일랜드 간 상태 공유

독립적인 아일랜드 간에 통신하려면 브라우저 기본 메커니즘(사용자 지정 이벤트, URL, localStorage)이나 작은 공유 저장소 싱글턴을 사용하십시오.

// Shared nano-store (nanostores library works well with Astro):
import { atom } from 'nanostores';
export const cartCount = atom(0);

// Island A:
cartCount.set(cartCount.get() + 1);
// Island B subscribes:
cartCount.subscribe(count => setDisplay(count));

아일랜드 아키텍처를 사용하는 경우

대부분의 콘텐츠가 정적이고 소수의 컴포넌트만 상호작용을 필요로 하는 콘텐츠 중심 사이트(블로그, 전자상거래, 마케팅)에 가장 적합합니다. 예를 들면 검색, 장바구니, 폼 등이 있습니다.

아일랜드와 SSR, SPA 비교

SPA: 모든 JS를 사용하고 모든 항목을 하이드레이션합니다. SSR: 서버에서 렌더링한 후 모든 항목을 하이드레이션합니다. 아일랜드: 서버에서 모든 항목을 렌더링하지만 대화형 위젯만 하이드레이션합니다. 아일랜드 방식은 콘텐츠 사이트에서 성능 면의 이점이 큽니다.

빠른 확인

아일랜드 아키텍처 패턴의 가장 큰 성능상 이점은 무엇입니까?

복습

아일랜드 아키텍처는 대부분의 HTML을 정적 상태(JS 없음)로 유지하고 대화형 위젯만 하이드레이션합니다. 목적에 맞는 아일랜드 프레임워크로는 아스트로를 사용하거나, Next.js 서버/클라이언트 컴포넌트로 이를 근사할 수 있습니다. 중요하지 않은 아일랜드에는 client:visible/IntersectionObserver를 사용해 지연 하이드레이션을 적용하십시오.

자주 묻는 질문

“아일랜드 아키텍처 패턴” 강의는 무료인가요?

네 — “아일랜드 아키텍처 패턴” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 React Academy 강의 전체를 잠금 해제할 수 있습니다. React Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“아일랜드 아키텍처 패턴”에서 뭘 배우나요?

대부분 정적인 HTML을 제공하고 대화형 위젯만 수화해 상호작용 가능 시간을 최적화합니다. 브라우저에서 직접 실행하는 실습 코드로 React Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

React Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 React Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“아일랜드 아키텍처 패턴” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 React Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 React Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. React SSR 내부 동작 이해하기
  2. 수화 오류: 원인과 해결 방법
  3. 선택적 수화와 스트리밍 HTML
  4. 아일랜드 아키텍처 패턴
← React Academy(으)로 돌아가기