λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Lect & Tip/node, Angular, React

μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈμ˜ 뢄리: μœ μ§€λ³΄μˆ˜μ„±μ„ λ†’μ΄λŠ” 방법

by st곡간 2024. 9. 9.

λͺ©μ°¨

    μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈμ˜ 뢄리: μœ μ§€λ³΄μˆ˜μ„±μ„ λ†’μ΄λŠ” 방법

    κ°œλ°œμ„ ν•˜λ‹€ 보면 μ„œλ²„μ—μ„œ λ°›μ•„μ˜¨ 데이터λ₯Ό κ·ΈλŒ€λ‘œ 화면에 λ Œλ”λ§ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“€κ²Œ λ©λ‹ˆλ‹€. κ·ΈλŸ¬ν•œ 경우, μ„œλ²„μ—μ„œ λ°˜ν™˜λ˜λŠ” λ°μ΄ν„°μ˜ ν˜•μ‹μ΄ λ³€κ²½λ˜λ©΄ μ»΄ν¬λ„ŒνŠΈ μ½”λ“œμ—λ„ 영ν–₯을 미치게 λ˜μ–΄ μœ μ§€λ³΄μˆ˜κ°€ μ–΄λ €μ›Œμ§€λŠ” λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈλ₯Ό λΆ„λ¦¬ν•˜μ—¬ 각각의 μ±…μž„μ„ λͺ…ν™•νžˆ ν•˜κ³ , λ³€ν™”ν•˜λŠ” ν™˜κ²½μ—μ„œλ„ μ•ˆμ •μ μœΌλ‘œ μ»΄ν¬λ„ŒνŠΈλ₯Ό 관리할 수 μžˆλŠ” 방법에 λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.


    문제의 좜발점: μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈμ˜ κ°•ν•œ κ²°ν•©

    λŒ€λΆ€λΆ„μ˜ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μ„œλ²„μ—μ„œ 데이터λ₯Ό λ°›μ•„ 이λ₯Ό 화면에 ν‘œμ‹œν•˜λŠ” ꡬ쑰둜 이루어져 μžˆμŠ΅λ‹ˆλ‹€. 개발 μ΄ˆκΈ°μ—λŠ” μ„œλ²„μ—μ„œ μ œκ³΅ν•˜λŠ” 데이터 ν˜•μ‹μ— 맞좰 μ»΄ν¬λ„ŒνŠΈλ₯Ό μ œμž‘ν•˜λŠ” 것이 μžμ—°μŠ€λŸ¬μ›Œ λ³΄μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ•„λž˜μ™€ 같이 μ„œλ²„μ—μ„œ λ°˜ν™˜λœ 데이터λ₯Ό κ·ΈλŒ€λ‘œ μ»΄ν¬λ„ŒνŠΈμ˜ props νƒ€μž…μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 경우λ₯Ό 생각해 λ΄…μ‹œλ‹€.

    interface BeforeStudent {
      name: string;
      age: number;
      school: string;
      friendNumber: number;
      howToGetToSchool: string;
    }
    
    const Page = () => {
      // μ„œλ²„μ—μ„œ 데이터λ₯Ό λ°›μ•„μ˜€λŠ” ν•¨μˆ˜
      const studentData: BeforeStudent = getStudent();
      return <StudentComponent data={studentData} />;
    };
    
    interface StudentComponentProps {
      data: BeforeStudent;
    }
    
    const StudentComponent = ({ data }: StudentComponentProps) => {
      return (
        <div>
          <div>{`이름은 ${data.name} μž…λ‹ˆλ‹€.`}</div>
          <div>{`λ‚˜μ΄λŠ” ${data.age} μž…λ‹ˆλ‹€.`}</div>
          <div>{`μΉœν•œ 친ꡬ의 μˆ˜λŠ” ${data.friendNumber} μž…λ‹ˆλ‹€.`}</div>
        </div>
      );
    };
    
    export default StudentComponent;

    이처럼 μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œ μ„œλ²„μ—μ„œ λ°›μ•„μ˜¨ 데이터 전체λ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜κ²Œ 되면, μ„œλ²„μ˜ 데이터 ꡬ쑰가 μ‘°κΈˆμ΄λΌλ„ 변경될 경우 μ»΄ν¬λ„ŒνŠΈ μ½”λ“œλ₯Ό ν•¨κ»˜ μˆ˜μ •ν•΄μ•Ό ν•˜λŠ” λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ„œλ²„μ—μ„œ λ°˜ν™˜ν•˜λŠ” 데이터 ν˜•μ‹μ΄ μ•„λž˜μ™€ 같이 λ³€κ²½λœλ‹€λ©΄ μ–΄λ–¨κΉŒμš”?

    interface AfterStudent {
      person: {
        name: string;
        age: number;
        school: string;
      };
      friendNumber: number;
      howToGetToSchool: string;
    }

    기쑴의 StudentComponentλŠ” μ—¬μ „νžˆ BeforeStudent νƒ€μž…μ˜ 데이터λ₯Ό μ‚¬μš©ν•˜λ„λ‘ μž‘μ„±λ˜μ–΄ 있기 λ•Œλ¬Έμ—, 데이터 ꡬ쑰가 변경됨에 따라 μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ˜ μ ‘κ·Ό 방식 λ˜ν•œ ν•¨κ»˜ μˆ˜μ •λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 즉, λ‹¨μˆœνžˆ μ„œλ²„μ˜ 데이터 변경에 λ§žμΆ”κΈ° μœ„ν•΄ μ»΄ν¬λ„ŒνŠΈ μ½”λ“œκΉŒμ§€ λ³€κ²½ν•˜κ²Œ λ˜λŠ” 상황이 λ°œμƒν•©λ‹ˆλ‹€.


    문제의 본질: 단일 μ±…μž„ 원칙(SRP) μœ„λ°˜

    μ»΄ν¬λ„ŒνŠΈκ°€ λ³Έμ—°μ˜ 역할은 UIλ₯Ό λ Œλ”λ§ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μœ„μ˜ μ˜ˆμ‹œμ²˜λŸΌ μ„œλ²„μ—μ„œ λ°›μ•„μ˜¨ 데이터 전체λ₯Ό μ»΄ν¬λ„ŒνŠΈκ°€ 직접 μ²˜λ¦¬ν•˜κ²Œ 되면, μ»΄ν¬λ„ŒνŠΈλŠ” λ°μ΄ν„°μ˜ ꡬ쑰와 λ Œλ”λ§μ΄λΌλŠ” 두 가지 역할을 λ™μ‹œμ— κ°€μ§€κ²Œ λ©λ‹ˆλ‹€. μ΄λŠ” 객체지ν–₯ μ„€κ³„μ˜ 단일 μ±…μž„ 원칙(Single Responsibility Principle, SRP)에 μœ„λ°°λ˜λŠ” λ¬Έμ œμ μž…λ‹ˆλ‹€.

    단일 μ±…μž„ 원칙에 λ”°λ₯΄λ©΄, ν•˜λ‚˜μ˜ λͺ¨λ“ˆμ΄λ‚˜ μ»΄ν¬λ„ŒνŠΈλŠ” ν•˜λ‚˜μ˜ μ—­ν• λ§Œ μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€. 즉, λ°μ΄ν„°μ˜ 가곡과 λ Œλ”λ§μ€ μ„œλ‘œ λ‹€λ₯Έ κ΄€μ‹¬μ‚¬λ‘œ λΆ„λ¦¬λ˜μ–΄μ•Ό ν•˜λ©°, ν•œμͺ½μ΄ λ³€κ²½λ˜μ–΄λ„ λ‹€λ₯Έ μͺ½μ—λŠ” 영ν–₯을 주지 μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€. μ„œλ²„ 데이터가 λ³€κ²½λ˜λ”λΌλ„ UIλ₯Ό λ Œλ”λ§ν•˜λŠ” λ‘œμ§μ€ κ·ΈλŒ€λ‘œ μœ μ§€λ  수 μžˆλ„λ‘, 데이터 가곡과 UI λ Œλ”λ§μ„ λͺ…ν™•νžˆ λΆ„λ¦¬ν•˜λŠ” 것이 μœ μ§€λ³΄μˆ˜μ„± μΈ‘λ©΄μ—μ„œ 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.


    ν•΄κ²°μ±…: μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€ 데이터 νƒ€μž… μ •μ˜ν•˜κΈ°

    문제λ₯Ό ν•΄κ²°ν•˜λŠ” κ°€μž₯ 효과적인 방법은 μ»΄ν¬λ„ŒνŠΈκ°€ μ‹€μ œλ‘œ ν•„μš”ν•œ λ°μ΄ν„°λ§Œμ„ λ³„λ„μ˜ νƒ€μž…μœΌλ‘œ μ •μ˜ν•˜κ³ , μ„œλ²„μ—μ„œ λ°›μ•„μ˜¨ 데이터λ₯Ό ν•΄λ‹Ή νƒ€μž…μ— 맞게 κ°€κ³΅ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ„œλ²„μ˜ 데이터 ꡬ쑰가 λ³€κ²½λ˜λ”λΌλ„ μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œλŠ” 였직 ν•„μš”ν•œ λ°μ΄ν„°λ§Œμ„ μ‚¬μš©ν•˜κ²Œ λ˜μ–΄, μ»΄ν¬λ„ŒνŠΈ μ½”λ“œ μˆ˜μ •μ˜ 뢀담을 크게 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.

    μ•„λž˜λŠ” 이λ₯Ό μ μš©ν•œ μ˜ˆμ‹œ μ½”λ“œμž…λ‹ˆλ‹€.

    // μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ‹€μ œλ‘œ ν•„μš”ν•œ λ°μ΄ν„°λ§Œμ„ λͺ…μ‹œν•œ νƒ€μž…
    interface StudentComponentData {
      name: string;
      age: number;
      friendNumber: number;
    }
    
    interface AfterStudent {
      person: {
        name: string;
        age: number;
        school: string;
      };
      friendNumber: number;
      howToGetToSchool: string;
    }
    
    const Page = () => {
      // μ„œλ²„μ—μ„œ 데이터λ₯Ό λ°›μ•„μ˜€λŠ” ν•¨μˆ˜
      const studentData: AfterStudent = getStudent();
    
      // μ„œλ²„ λ°μ΄ν„°μ—μ„œ μ»΄ν¬λ„ŒνŠΈμ— ν•„μš”ν•œ λ°μ΄ν„°λ§Œ μΆ”μΆœ
      const data: StudentComponentData = {
        name: studentData.person.name,
        age: studentData.person.age,
        friendNumber: studentData.friendNumber,
      };
    
      return <StudentComponent data={data} />;
    };
    
    interface StudentComponentProps {
      data: StudentComponentData;
    }
    
    const StudentComponent = ({ data }: StudentComponentProps) => {
      return (
        <div>
          <div>{`이름은 ${data.name} μž…λ‹ˆλ‹€.`}</div>
          <div>{`λ‚˜μ΄λŠ” ${data.age} μž…λ‹ˆλ‹€.`}</div>
          <div>{`μΉœν•œ 친ꡬ의 μˆ˜λŠ” ${data.friendNumber} μž…λ‹ˆλ‹€.`}</div>
        </div>
      );
    };
    
    export default StudentComponent;

    μœ„μ˜ μ½”λ“œμ—μ„œλŠ” μ»΄ν¬λ„ŒνŠΈμ—μ„œ ν•„μš”ν•œ λ°μ΄ν„°λ§Œ λ³„λ„λ‘œ μ •μ˜ν•˜κ³ , μ„œλ²„μ—μ„œ λ°›μ•„μ˜¨ 데이터λ₯Ό ν•΄λ‹Ή νƒ€μž…μ— 맞게 λ³€ν™˜ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ λΆ„λ¦¬ν•˜κ²Œ 되면, μ„œλ²„ λ°μ΄ν„°μ˜ ꡬ쑰가 λ³€κ²½λ˜λ”λΌλ„ λ³€ν™˜ 둜직(μ—¬κΈ°μ„œλŠ” Page μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€)만 μˆ˜μ •ν•˜λ©΄ 되며, μ‹€μ œλ‘œ UIλ₯Ό λ Œλ”λ§ν•˜λŠ” StudentComponent의 μ½”λ“œλŠ” κ·ΈλŒ€λ‘œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


    λΆ„λ¦¬μ˜ μž₯점: μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯μ„±μ˜ ν–₯상

    μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈλ₯Ό λΆ„λ¦¬ν•¨μœΌλ‘œμ¨ 얻을 수 μžˆλŠ” κ°€μž₯ 큰 이점은 λ°”λ‘œ μœ μ§€λ³΄μˆ˜μ„±μž…λ‹ˆλ‹€. ꡬ체적으둜 μ‚΄νŽ΄λ³΄λ©΄ λ‹€μŒκ³Ό 같은 μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.

    1. 단일 μ±…μž„ 원칙 μ€€μˆ˜
      μ»΄ν¬λ„ŒνŠΈλŠ” 단지 데이터λ₯Ό λ Œλ”λ§ν•˜λŠ” μ—­ν• λ§Œ μˆ˜ν–‰ν•˜κ³ , λ°μ΄ν„°μ˜ 가곡은 λ³„λ„μ˜ λ‘œμ§μ΄λ‚˜ μƒμœ„ μ»΄ν¬λ„ŒνŠΈμ—μ„œ λ‹΄λ‹Ήν•˜κ²Œ λ©λ‹ˆλ‹€. 이둜 인해 μ½”λ“œμ˜ 각 뢀뢄이 λͺ…ν™•ν•œ μ±…μž„μ„ κ°€μ§€κ²Œ λ˜μ–΄, μ–΄λŠ ν•œ 뢀뢄이 λ³€κ²½λ˜λ”λΌλ„ λ‹€λ₯Έ 뢀뢄에 λ―ΈμΉ˜λŠ” 영ν–₯을 μ΅œμ†Œν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    2. μ½”λ“œ λ³€κ²½ μ΅œμ†Œν™”
      μ„œλ²„μ˜ 데이터 ꡬ쑰가 λ³€κ²½λ˜λ”λΌλ„, UI μ»΄ν¬λ„ŒνŠΈλŠ” 전달받은 λ°μ΄ν„°λ§Œμ„ λ Œλ”λ§ν•˜λ―€λ‘œ ν•΄λ‹Ή μ»΄ν¬λ„ŒνŠΈμ˜ λ‚΄λΆ€ μ½”λ“œλ₯Ό μˆ˜μ •ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. λŒ€μ‹ , μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈ 데이터 κ°„μ˜ λ³€ν™˜ 둜직만 μˆ˜μ •ν•˜λ©΄ λ˜μ–΄, μ½”λ“œ λ³€κ²½ λ²”μœ„κ°€ μ€„μ–΄λ“­λ‹ˆλ‹€.
    3. ν…ŒμŠ€νŠΈ 및 디버깅 용이
      μ»΄ν¬λ„ŒνŠΈμ˜ 역할이 λͺ…ν™•ν•˜κ²Œ λΆ„λ¦¬λ˜λ©΄, 각 μ»΄ν¬λ„ŒνŠΈλ₯Ό λ…λ¦½μ μœΌλ‘œ ν…ŒμŠ€νŠΈν•˜κΈ° μ‰¬μ›Œμ§‘λ‹ˆλ‹€. 데이터 가곡 둜직과 UI λ Œλ”λ§ 둜직이 λΆ„λ¦¬λ˜μ–΄ 있으면, 문제 λ°œμƒ μ‹œ μ–΄λŠ λΆ€λΆ„μ—μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆλŠ”μ§€λ₯Ό μ‹ μ†ν•˜κ²Œ νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    4. μž¬μ‚¬μš©μ„± 증가
      μ»΄ν¬λ„ŒνŠΈκ°€ νŠΉμ • 데이터 ν˜•μ‹μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³ , 전달받은 λ°μ΄ν„°λ§Œμ„ λ Œλ”λ§ν•˜λŠ” ꡬ쑰라면, λ™μΌν•œ UI μ»΄ν¬λ„ŒνŠΈλ₯Ό λ‹€μ–‘ν•œ 데이터 μ†ŒμŠ€μ— μž¬μ‚¬μš©ν•˜κΈ°κ°€ μˆ˜μ›”ν•΄μ§‘λ‹ˆλ‹€. μ΄λŠ” 개발 κ³Όμ •μ—μ„œ μ½”λ“œ 쀑볡을 쀄이고, 보닀 λͺ¨λ“ˆν™”λœ ꡬ쑰λ₯Ό λ§Œλ“€ 수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

    μ‹€μ œ 개발 ν™˜κ²½μ—μ„œμ˜ 고렀사항

    λ¬Όλ‘ , λͺ¨λ“  μƒν™©μ—μ„œ μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈλ₯Ό μ™„λ²½ν•˜κ²Œ λΆ„λ¦¬ν•˜λŠ” 것이 항상 κ°„λ‹¨ν•˜μ§€λ§Œμ€ μ•ŠμŠ΅λ‹ˆλ‹€. μ‹€μ œ ν”„λ‘œμ νŠΈμ—μ„œλŠ” λ‹€μŒκ³Ό 같은 사항듀을 κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€.

    • 데이터 λ³€ν™˜ λΉ„μš©
      μ„œλ²„ 데이터λ₯Ό μ»΄ν¬λ„ŒνŠΈμ— 맞게 λ³€ν™˜ν•˜λŠ” λ‘œμ§μ„ μΆ”κ°€ν•˜κ²Œ 되면, 데이터 가곡에 좔가적인 μ½”λ“œκ°€ ν•„μš”ν•΄μ§‘λ‹ˆλ‹€. 이둜 인해 μ½”λ“œκ°€ λ‹€μ†Œ λ³΅μž‘ν•΄μ§ˆ 수 μžˆμœΌλ‚˜, μœ μ§€λ³΄μˆ˜μ„±μ„ λ†’μ΄λŠ” μž₯기적인 이점을 κ³ λ €ν•˜λ©΄ μΆ©λΆ„νžˆ κ°μˆ˜ν•  수 μžˆλŠ” λΆ€λΆ„μž…λ‹ˆλ‹€.
    • νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ ν™œμš©
      νƒ€μž…μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•˜λ©΄, μ»΄ν¬λ„ŒνŠΈμ—μ„œ ν•„μš”ν•œ 데이터 νƒ€μž…κ³Ό μ„œλ²„μ—μ„œ λ°›μ•„μ˜¨ 데이터 νƒ€μž…μ„ λͺ…ν™•ν•˜κ²Œ μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 컴파일 μ‹œμ μ—μ„œ νƒ€μž… μ—λŸ¬λ₯Ό 사전에 방지할 수 있으며, μ½”λ“œμ˜ μ•ˆμ •μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.
    • ν˜‘μ—… 및 μ½”λ“œ 리뷰
      μ—¬λŸ¬ κ°œλ°œμžκ°€ ν•¨κ»˜ μž‘μ—…ν•˜λŠ” ν™˜κ²½μ—μ„œλŠ” λ°μ΄ν„°μ˜ μΆœμ²˜μ™€ λ³€ν™˜ λ‘œμ§μ— λŒ€ν•œ λͺ…ν™•ν•œ λ¬Έμ„œν™”κ°€ ν•„μš”ν•©λ‹ˆλ‹€. μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈ λ°μ΄ν„°μ˜ 뢄리 방식을 νŒ€ 전체가 μ΄ν•΄ν•˜κ³  일관성 있게 μ μš©ν•΄μ•Ό, μž₯기적인 ν”„λ‘œμ νŠΈ μœ μ§€λ³΄μˆ˜μ— 큰 도움이 λ©λ‹ˆλ‹€.

    κ²°λ‘ : μ»΄ν¬λ„ŒνŠΈμ˜ 역할에 μ§‘μ€‘ν•˜λΌ

    μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈλ₯Ό λΆ„λ¦¬ν•˜λŠ” 것은 λ‹¨μˆœνžˆ μ½”λ“œλ₯Ό λ‚˜λˆ„λŠ” λ¬Έμ œκ°€ μ•„λ‹ˆλΌ, μ†Œν”„νŠΈμ›¨μ–΄ μ„€κ³„μ˜ κ·Όλ³Έ 원칙인 단일 μ±…μž„ 원칙을 μ€€μˆ˜ν•˜λŠ” μ€‘μš”ν•œ λ°©λ²•μž…λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈλŠ” 본래 UIλ₯Ό λ Œλ”λ§ν•˜λŠ” 역할에 집쀑해야 ν•˜λ©°, λ°μ΄ν„°μ˜ κ°€κ³΅μ΄λ‚˜ ꡬ쑰 변경에 λ”°λ₯Έ 영ν–₯을 μ΅œμ†Œν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

    μ‹€μ œλ‘œ μ„œλ²„ 데이터 ν˜•μ‹μ΄ λ³€κ²½λ˜λ”λΌλ„, μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€ μ½”λ“œλ₯Ό μˆ˜μ •ν•  ν•„μš”κ°€ 없도둝 μƒμœ„ μ»΄ν¬λ„ŒνŠΈλ‚˜ λ³„λ„μ˜ 데이터 λ³€ν™˜ λ‘œμ§μ—μ„œ 이λ₯Ό μ²˜λ¦¬ν•˜λ©΄, μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 크게 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ‹¨μˆœνžˆ μ½”λ“œ λ³€κ²½μ˜ νŽΈμ˜μ„±λΏ μ•„λ‹ˆλΌ, μž₯기적인 ν”„λ‘œμ νŠΈ 관리 μΈ‘λ©΄μ—μ„œλ„ 큰 μž₯점을 μ œκ³΅ν•©λ‹ˆλ‹€.

    κ°œλ°œμžλ‘œμ„œ μ΄λŸ¬ν•œ 뢄리 원칙을 잘 μ΄ν•΄ν•˜κ³  μ μš©ν•œλ‹€λ©΄, λ―Έλž˜μ— λ°œμƒν•  수 μžˆλŠ” λ‹€μ–‘ν•œ λ³€κ²½ 사항에도 μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 μžˆλŠ” κ²¬κ³ ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ좕할 수 μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.


    λ§ˆλ¬΄λ¦¬ν•˜λ©°

    이번 ν¬μŠ€νŒ…μ—μ„œλŠ” μ„œλ²„μ—μ„œ λ°›μ•„μ˜¨ 데이터와 μ»΄ν¬λ„ŒνŠΈ κ°„μ˜ κ°•ν•œ 결합이 μ–΄λ–»κ²Œ μœ μ§€λ³΄μˆ˜μ„±μ— μ•…μ˜ν–₯을 λ―ΈμΉ˜λŠ”μ§€, 그리고 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œ ν•„μš”ν•œ 데이터 νƒ€μž…λ§Œμ„ μ •μ˜ν•˜λŠ” 방법에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.
    λΆ„λ¦¬λœ ꡬ쑰 덕뢄에 UI μ»΄ν¬λ„ŒνŠΈλŠ” 였직 λ Œλ”λ§μ—λ§Œ 집쀑할 수 있으며, μ„œλ²„ 데이터 ν˜•μ‹μ΄ λ³€κ²½λ˜λ”λΌλ„ μ•ˆμ •μ μœΌλ‘œ μž‘λ™ν•  수 있게 λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ 섀계 방식은 단일 μ±…μž„ 원칙에 λΆ€ν•©ν•˜λ©°, 개발자의 생산성을 높이고 μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ μ¦λŒ€μ‹œν‚€λŠ” 효과적인 λ°©λ²•μž…λ‹ˆλ‹€.

    개발 μ΄ˆκΈ°μ—λŠ” μ„œλ²„ 데이터와 μ»΄ν¬λ„ŒνŠΈλ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄ λΉ λ₯΄κ²Œ 결과물을 λ‚΄λŠ” 것이 μœ λ¦¬ν•΄ 보일 수 μžˆμœΌλ‚˜, ν”„λ‘œμ νŠΈκ°€ ν™•μž₯되고 λ³΅μž‘ν•΄μ§ˆμˆ˜λ‘ μ΄λŸ¬ν•œ 결합은 였히렀 λΆ€λ‹΄μœΌλ‘œ μž‘μš©ν•˜κ²Œ λ©λ‹ˆλ‹€. λ”°λΌμ„œ, μž₯기적인 κ΄€μ μ—μ„œ μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 κ³ λ €ν•œ 섀계 방식을 μ±„νƒν•˜λŠ” 것이 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.

    μ•žμœΌλ‘œλ„ 개발 κ³Όμ •μ—μ„œ 데이터와 UI의 μ±…μž„ 뢄리λ₯Ό λͺ…ν™•νžˆ ν•˜μ—¬, 보닀 μ•ˆμ •μ μ΄κ³  κ΄€λ¦¬ν•˜κΈ° μ‰¬μš΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“œλŠ” 데 도움이 λ˜μ‹œκΈΈ λ°”λžλ‹ˆλ‹€.

    λ°˜μ‘ν˜•

    λŒ“κΈ€