μ§μ₯λλ£μ ν¨κ» νλ‘ νΈμλ κ°λ° μμ°μ±μ λν΄ ν λ‘ νλ€κ°, λ°λ³΅λλ λ¨μ μμ μ μ€μ΄κΈ° μν μλν νλ‘μ νΈλ₯Ό μμνκ² λμμ΅λλ€. νμ¬λ μ€νμμ€ λΌμ΄λΈλ¬λ¦¬λ₯Ό 컀μ€ν νκ±°λ μ§μ μ μν λꡬλ€μ npmμ λ°°ν¬νμ¬ μ€μ ν λ΄ νλ‘μ νΈμ μ μ©ν΄ μ¬μ©νκ³ μμ΅λλ€.
- msw-auto-mock: OpenAPI μ€ν κΈ°λ°μ MSW νΈλ€λ¬ μλ μμ± λꡬμ λλ€. κΈ°μ‘΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν¬ν¬νμ¬, 볡μ‘ν λΉμ¦λμ€ λ‘μ§μ λμν μ μλλ‘ μλ리μ€λ³ 컀μ€ν κΈ°λ₯μ νμ₯νμ΅λλ€.
- e2e-autogen: ν μ€νΈ μλ리μ€κ° λ΄κΈ΄ μ€νλ λ μνΈ λ°μ΄ν°λ₯Ό Playwright ν μ€νΈ μ€ν (Stub)μ½λλ‘ λ³νν΄ μ£Όλ λꡬμ λλ€.
- api-recorder: μ€μ λ€νΈμν¬ API νΈμΆμ λ Ήννμ¬ JSON λ°μ΄ν°λ‘ λ³νν©λλ€. μ΄λ μμ λ λꡬμ ν΅ν©λμ΄, μ€μ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ ν μ κ΅ν MSW, Playwright λͺ©μ μ μμ±νλ λ°μ΄ν°λ₯Ό λ§λλ ν΅μ¬ μν μ ν©λλ€.
νμ§λ§ μ΄ λꡬλ€μ νμ©ν΄ Playwright E2E μ½λλ₯Ό μμ±νλ€ λ³΄λ λͺ κ°μ§ μ€μ§μ μΈ λΆνΈν¨μ λ°κ²¬νκ² λμκ³ , μ΄λ₯Ό κ°μ νλ κ³Όμ μμ κΈ°μ‘΄ μ€κ³μ ꡬ쑰μ κ²°ν¨κ³Ό μμ‘΄μ± λ¬Έμ λ‘ μΈν νμ₯μ±μ νκ³λ₯Ό λκΌμ΅λλ€. μ΄λ² κΈμμλ κΈ°μ‘΄ λꡬμ λΆνΈν¨μ κ°μ ν¨κ³Ό λμμ, λ μ μ°ν μν€ν μ²λ‘ μ¬μ€κ³νλ©° κ³ λ―Όνλ κ³Όμ λ€μ μ΄μΌκΈ°ν΄λ³΄λ € ν©λλ€.
μ΄λ€ λΆνΈν¨μ΄ μμμκΉ?
api-recorder: 보쑰 λκ΅¬λ‘ μ°κΈ°μλ κ°μ λΉμ©μ΄ ν½λλ€
κ°λ°ν λλ λ³΄ν΅ κ°λ°μ λꡬλ₯Ό νμ μ΄μ΄λκ³ μμ ν©λλ€. api-recorderλ‘ λ€νΈμν¬ λ‘κ·Έλ₯Ό μμ§ν λλ λ§μ°¬κ°μ§μ΄κ³ , μ¬κΈ°μ TanStack Query DevtoolsκΉμ§ ν¨κ» μ¬μ©νλ κ²½μ°λ λ§μ΅λλ€.
μ΄ μνμμ λ€νΈμν¬ λ Ήνλ₯Ό μν΄ api-recorder ν¨λκΉμ§ μΆκ°λ‘ μ΄κ² λλ©΄, νλ©΄μμ κ°λ €μ§λ μμμ΄ λ§μμ Έ μμ νλ¦μ΄ λκΈ°λ λλμ λ°μμ΅λλ€. λ¬Όλ‘ ν¨λμ μ΅μνν μλ μμ§λ§, λ Ήν κ²°κ³Όλ₯Ό μ€κ°μ€κ° νμΈνλ €λ©΄ λ€μ μ΄μ΄μΌ νκ³ , μ΄ κ³Όμ μ΄ λ°λ³΅λλ©΄μ μκ·Όν νΌλ‘λκ° μμμ΅λλ€.
μ¬μν λΆνΈν¨μ²λΌ λ³΄μΌ μ μμ§λ§, μ΄ μ§μ μμ κ³μν΄μ μ΄λ° μκ°μ΄ λ€μμ΅λλ€.
msw-auto-mock: μλνλμμ§λ§ μ¬μ ν μμ΄ λ§μ΄ κ°λλ€
msw-auto-mockμ api-recorderλ‘ λ Ήνν λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ MSW override νΈλ€λ¬ μ½λλ₯Ό μλ μμ±ν΄μ£Όλ λꡬμ λλ€. μ΄ λꡬλ₯Ό νμ©ν΄ ν μ€νΈ μΌμ΄μ€λ³λ‘ λ€νΈμν¬λ₯Ό λͺ©μ ν λλ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μΉκ² λ©λλ€.
- api-recorderλ₯Ό μ€ννκ³ μνλ μλ리μ€λ₯Ό μννμ¬ λ€νΈμν¬ JSON νμΌμ μμ±ν©λλ€.
- μμ±λ νμΌμ νλ‘μ νΈ κ²½λ‘μ μ μ₯ν λ€, μ΄λ€ μλ리μ€μ λ§€νν μ§ μ€μ ν©λλ€.
- msw-auto-mock λͺ λ Ήμ΄λ₯Ό μ€νν΄ override νΈλ€λ¬λ₯Ό μμ±ν©λλ€.
ν μ€νΈ μΌμ΄μ€ νλλ₯Ό μΆκ°ν λλ§λ€ μ΄ μΈ λ¨κ³λ₯Ό λ°λ³΅ν΄μΌ νκ³ , μ΄ κ³Όμ μ΄ μ μ λ²κ±°λ‘κ² λκ»΄μ‘μ΅λλ€. μ΄λ―Έ JSON λ°μ΄ν°κ° μλλ°, κ΅³μ΄ λ€μ μ½λλ₯Ό μμ±νμ§ μκ³ μ΄ λ°μ΄ν°λ₯Ό κ·Έλλ‘ λ°νμμμ νμ©ν μλ μμκΉ? λΌλ μκ°μ΄ λ€μμ΅λλ€.
ν μ€νΈ μ½λμ²λΌ λ¨μ λ°λ³΅ μμ μ΄ λ§μ μμμμλ, λ¨κ³ νλλ₯Ό μ€μ΄λ κ²λ§μΌλ‘λ μ²΄κ° μμ°μ±μ΄ ν¬κ² λ¬λΌμ§λ€κ³ λκΌμ΅λλ€.
e2e-autogen: μμ±μ νΈνμ§λ§ μ€ν λ§₯λ½μ΄ λΆλ¦¬λμ΄ μμ΅λλ€
e2e ν μ€νΈλ₯Ό μμ±ν λλ λ³΄ν΅ Playwright μ λλ μ΄ν°λ₯Ό μ¬μ©ν΄ μλ리μ€λ₯Ό κΈ°λ‘νλλ°, μ΄ λ¨κ³μμλ λͺ©μ λ λ°μ΄ν°λ₯Ό μ¬μ©ν μ μμ΅λλ€. mockApiResponseλ ν μ€νΈ μ½λ μ€ν μμ μλ§ μ μ©λκ³ , Playwright μ λλ μ΄ν°λ ν μ€νΈ μ€νμ΄ μλλΌ μΌλ° λΈλΌμ°μ μ€νμ΄κΈ° λλ¬Έμ λλ€.
μλ₯Ό λ€μ΄ "λͺ©λ‘μ μμ΄ν μ΄ νλλ μμ λ λΉ νλ©΄ λ¬Έκ΅¬κ° λ ΈμΆλμ΄μΌ νλ€"λ μλ리μ€λ₯Ό κ²μ¦νλ €λ©΄,
- msw-auto-mockμΌλ‘ λΉ μλ΅μ λν λͺ©μ μ λ§λ€μ΄ Playwright μ λλ μ΄ν° μμ μ νμ©νκ³ , ν μ€νΈ μ½λ μ€ν μμ μλ e2e-autogenμ mockApiResponse fixtureλ₯Ό μ¬μ©νλ λ°©μμΌλ‘ λ λ²μ μμ μ νκ±°λ
- Playwright μ λλ μ΄ν° μ€ν μμ μλ UI μ½λλ₯Ό μμλ‘ μμ ν΄ νμΈν λ€, ν μ€νΈ μ½λ μ€ν μμ μλ λ€μ mockApiResponse fixtureλ₯Ό μ¬μ©νλ λ°©μμΌλ‘ μ°νν΄μΌ νμ΅λλ€.
μ΄ κ³Όμ μ ν μ€νΈλ₯Ό λΉ λ₯΄κ² μμ±νκ³ κ²μ¦νκΈ°μλ μ§λμΉκ² λ²κ±°λ‘μ κ³ , κ²°κ΅ κ°λ° νλ¦κ³Ό ν μ€νΈ μ€ν λ§₯λ½μ΄ λΆλ¦¬λμ΄ μλ€λ μ μ΄ κ°μ₯ ν° λ¬Έμ λ‘ λκ»΄μ‘μ΅λλ€. κ·Έλμ μ΄ λΆνΈν¨λ€μ λμμ ν΄κ²°ν μ μλ κ΅¬μ‘°κ° νμνλ€κ³ νλ¨νμ΅λλ€.
κ°μ μμ΄λμ΄
μμ μΈκΈν λΆνΈν¨λ€μ μ 리νλ€ λ³΄λ, λ€μκ³Ό κ°μ μμ΄λμ΄κ° λ μ¬λμ΅λλ€.
- e2e-autogenμ νΈλ¦¬ν¨κ³Ό mswμ μ μ°ν¨μ ν©μΉ μ μμκΉ?
- api-recorderλ‘ μμ±ν JSON λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘, μ½λλ₯Ό μμ±νμ§ μκ³ λ λ°νμμ MSW νΈλ€λ¬λ₯Ό λμ μΌλ‘ μΈν ν μ μλ€λ©΄ μ΄λ¨κΉ?
μ΄λ₯Ό μν΄ κ° ν μ€νΈ μλ리μ€μ λμνλ μλλ¦¬μ€ λ§€ν νμΌμ λκ³ , ν΄λΉ μλ리μ€λ₯Ό μ£Όμ νλ©΄ λ°νμμμ νμν νΈλ€λ¬κ° ꡬμ±λλ ꡬ쑰λ₯Ό λ μ¬λ Έμ΅λλ€.
μ΄ μ κ·Όμ΄ κ°λ₯νλ€λ©΄,
- msw-auto-mockμ²λΌ μ¬μ μμ± κ³Όμ μ κ±°μΉμ§ μμλ λκ³
- e2e-autogenμ²λΌ ν μ€νΈ μ€ν μμ λΏ μλλΌ, κ°λ°Β·λλ²κΉ λ¨κ³μμλ λμΌν λͺ©μ μ μ¬μ©ν μ μμ κ²μ΄λΌκ³ μκ°νμ΅λλ€.
μμ΄λμ΄λ₯Ό ꡬ체ννλ©° μκ² λ HAR μ€ν
μ μκ°μ λ°νμΌλ‘ μμ΄λμ΄λ₯Ό ꡬ체ννλ μ€, ν κ°μ§ μ§λ¬Έμ΄ μκ²Όμ΅λλ€.
μ΄ κ³Όμ μμ HAR(Http Archive)μ€νμ μκ²λμμ΅λλ€. HAR νμΌμ λΈλΌμ°μ κ°λ°μ λꡬμ λ€νΈμν¬ νμμ κΈ°λ‘λλ μμ²/μλ΅ μ 보λ₯Ό νμ€νλ JSON ν¬λ§·μΌλ‘ μ μ₯ν νμΌμ λλ€. μ¦, κ°λ°μκ° μ΄λ―Έ μ΅μνκ² λ³΄κ³ μλ λ€νΈμν¬ λ‘κ·Έλ₯Ό κ·Έλλ‘ νμΌλ‘ μΆμΆν μ μμ΅λλ€.
HAR νμΌμ κΈ°λ°μΌλ‘ api-recorderμμ μ¬μ©νλ JSON ν¬λ§·μ μμ±ν μ μλ€λ©΄, λ³λμ api-recorder λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉνμ§ μμλ λκ³ , κ°λ°μ λꡬμ λ€νΈμν¬ νμ΄λΌλ κΈ°μ‘΄ νλ¦μ κ·Έλλ‘ μ μ§ν μ μμ κ²μ΄λΌ μκ°νμ΅λλ€.
κΈ°μ‘΄ ꡬ쑰μμ λλ¬λ λ¬Έμ μ
νμ§λ§ μ΄ μμ΄λμ΄λ₯Ό κΈ°μ‘΄ ꡬ쑰μ μ μ©νλ €κ³ νμ, ꡬ쑰μ μΈ λ¬Έμ λ€μ΄ λλ¬λκΈ° μμνμ΅λλ€.
μμ‘΄μ± λ¬Έμ
νμ¬ κ΅¬μ‘°μμλ e2e-autogen, msw-auto-mockμ΄ api-recorderκ° μμ±ν κ²°κ³Όλ¬Όμ νμ
κ³Ό μ€νμ μ§μ μμ‘΄νκ³ μμ΅λλ€.
λ¬Έμ λ μ΄ μμ‘΄μ±μ΄ μ±κ²©μ μ΄μνλ€λ μ μ΄μμ΅λλ€. λ λΌμ΄λΈλ¬λ¦¬λ api-recorderμ κΈ°λ₯μ μ¬μ©νμ§ μκ³ ,
μ€μ§ κ²°κ³Όλ¬Όμ νν(νμ
) λ§ νμλ‘ ν©λλ€. κ·ΈλΌμλ λΆκ΅¬νκ³ λ¨μν νμ
μ μ°Έμ‘°νκΈ° μν΄ api-recorderλ₯Ό μ’
μμ±μΌλ‘ μ€μΉνλ κ²μ μ¬μ©μ μ
μ₯μμ λ©λνκΈ° μ΄λ €μ΄ ꡬ쑰λΌκ³ λκ»΄μ‘μ΅λλ€.
νΉν e2e-autogen, msw-auto-mockμ μ¬μ©νλ μ¬μ©μ μ€μλ api-recorderλ₯Ό μ ν μ¬μ©νμ§ μλ κ²½μ°λ μκΈ° λλ¬Έμ, μ΄ μμ‘΄μ±μ λΆνμν κ²°ν©μ κ°μ νλ μ μ΄ λ©λλ€.
κ·Έλμ μμλ°©νΈμΌλ‘ μ νν λ°©λ²μ΄, api-recorderμ νμ
μ μλ₯Ό κ° λΌμ΄λΈλ¬λ¦¬ λ΄λΆμ 볡μ¬ν΄μ κ΄λ¦¬νλ λ°©μμ΄μμ΅λλ€.
νμ§λ§ μ΄ λ°©μμ λͺ
ννκ² Single Source of Truth μμΉμ μλ°°ν©λλ€. api-recorderμ νμ
μ΄ λ³κ²½λλλΌλ e2e-autogen, msw-auto-mockμμλ μ΄λ₯Ό μλμΌλ‘ μΈμ§ν μ μκ³ , κ²°κ΅ μΈ κ³³μ μ½λλ₯Ό λͺ¨λ μμ ν΄μΌ νλ κ΅¬μ‘°κ° λ©λλ€.
λ ν° λ¬Έμ λ μμ‘΄μ± λ°©ν₯μ΄μμ΅λλ€. κ°λ μ μΌλ‘ 보면 e2e-autogen, msw-auto-mockμ νμ λͺ¨λμ κ°κΉκ³ , api-recorder μμ νλμ νμ ꡬν체μ λΆκ³Όν©λλ€. κ·Έλ°λ° μ΄ νμ λͺ¨λλ€μ΄ μλ‘μ λ΄λΆ ꡬ쑰λ₯Ό μ μ λ‘ λμνκ² λλ©΄μ, κ²°κ³Όμ μΌλ‘ νμ λͺ¨λλ€λΌλ¦¬ κ°νκ² κ²°ν©λ μνκ° λμ΄λ²λ Έμ΅λλ€.
μ΄ κ΅¬μ‘°μμλ μ΄λ ν λͺ¨λμ λ³κ²½λ λ€λ₯Έ λͺ¨λ λͺ¨λμ μ°μμ μΈ μν₯μ μ€ μλ°μ μκ³ , νμ₯μ΄λ μ€ν λ³κ²½μ λ§€μ° μ·¨μ½ν μνλΌκ³ νλ¨νμ΅λλ€.
har νΈνμ± λ¬Έμ
api-recorder λμ κ°λ°μλꡬμ harμ μ¬μ©νλ €λ©΄, harμ api-recorderμ νΈνλλ νμμΌλ‘ λ°κΎΈλ κ³Όμ μ΄ νμνλ°, μ΄ λν μ΄ λμμ μνν΄μ£Όλ har-to-api-recorderλΌλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μΆκ°λ‘ λ§λ€ κ³νμ μΈμ μ΅λλ€.
νμ§λ§ μ¬κΈ°μ λ νλμ μ΄μν¨μ΄ λκ»΄μ‘μ΅λλ€.
- har-to-api-recorder
- msw-auto-mock
- e2e-autogen
μ΄ μΈ λΌμ΄λΈλ¬λ¦¬λ api-recorderμ κΈ°λ₯μ μ§μ μ¬μ©νμ§ μμμλ λΆκ΅¬νκ³ , λͺ¨λ api-recorderμ μ€ν λ³κ²½μ μν₯μ λ°λ κ΅¬μ‘°κ° λμ΄ μμμ΅λλ€.
λ§μ½ api-recorderμ μ€νμ΄ λ³κ²½λλ€λ©΄, μ°μμ μΌλ‘ λͺ¨λ λΌμ΄λΈλ¬λ¦¬κ° μν₯μ λ°κ² λ©λλ€.
κ²λ€κ° HAR νμΌμλ api-recorderμλ μμ§λ§,
- ν₯ν MSW λͺ©μ μ΄λ ν μ€νΈμ νμ©ν μ μμ λ²ν μ 보λ€μ΄ μ‘΄μ¬νκ³
- μ΄λ₯Ό μ€νμ ν¬ν¨μν€κ³ μΆμμ§λ§
- μ΄λ―Έ λ°°ν¬λ λΌμ΄λΈλ¬λ¦¬μ μ¬μ©μλ€μ΄ μ‘΄μ¬νκΈ° λλ¬Έμ λ§μλλ‘ λ³κ²½ν μ μλ μν©μ΄μμ΅λλ€. μ΄ μ§μ μμ, λ¬Έμ μ λ³Έμ§μ ν¬λ§· λ³νμ΄ μλλΌ κ΅¬μ‘°λΌλ κ²°λ‘ μ μ΄λ₯΄λ μ΅λλ€.
ν΄κ²° λ°©λ²: μ€νμ μ€μ¬μΌλ‘ DIP μμΉ μ μ©νκΈ°
μ΄ λ¬Έμ λ₯Ό νκΈ° μν΄ λ μ¬λ¦° ννΈλ OpenAPI μ€ν ꡬ쑰μμ΅λλ€.
OpenAPIλ 2.0, 3.0, 3.1 λ± μ¬λ¬ λ²μ μ μ€ν€λ§κ° μ‘΄μ¬νμ§λ§, μ΄λ₯Ό μ§μ μ²λ¦¬νκΈ°λ³΄λ€ swagger-parser κ°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν΅ν΄ μ κ·νλ ννλ‘ ν΄μν©λλ€.
μ΄ κ΅¬μ‘°μμ μμ΄λμ΄λ₯Ό μ»μ΄, λ€νΈμν¬ λ‘κ·Έλ κ°μ λ°©μμΌλ‘ λ€λ£¨κΈ°λ‘ νμ΅λλ€.
ν΅μ¬ μμ΄λμ΄
- api-recorderκ° μμ±ν ν¬λ§·μ μ€ν€λ§ v1.0
- HAR νμΌμ κΈ°λ°μΌλ‘ μμ±ν ν¬λ§·μ μ€ν€λ§ v1.1
λ‘ μ μνκ³ , μ΄ λ€μν μ€ν€λ§λ₯Ό ν΄μνκ³ μ κ·ννλ μ½μ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό λΆλ¦¬νκΈ°λ‘ νμ΅λλ€. μ΄ μ€νμ μ΄λ¦μ network-logλΌκ³ λͺ λͺ νμ΅λλ€.
network-log-coreμ μν

1. λ€μν ννμ μ λ ₯μ λ¨μΌ NetworkLog ν¬λ§·μΌλ‘ μ κ·νν©λλ€.
network-log-coreμ ν΅μ¬ μ§μ μ μ NetworkLogParserμ λλ€. μ΄ ν¨μλ₯Ό ν΅ν΄raw λ°μ΄ν°κ° api-recorder(v1.0)μ΄λ , HAR κΈ°λ°μΌλ‘ μμ±λ v1.1 μ€ν€λ§μ΄λ κ΄κ³μμ΄ νμ μ κ·νλ NetworkLog ννλ‘ λ³νν©λλ€. μ΄ κ΅¬μ‘° λλΆμ e2e-autogen, msw-auto-mock κ°μ νμ λͺ¨λλ€μ λ°μ΄ν°κ° μ΄λμμ μλμ§λ₯Ό μ ν μ κ²½ μ°μ§ μκ³ νμ λμΌν νμμ λ€νΈμν¬ λ‘κ·Έλ₯Ό κΈ°μ€μΌλ‘ λμν μ μμ΅λλ€.
μ¦,μ λ ₯ ν¬λ§·μ λ€μμ±μ network-log-coreμμ ν‘μνκ³ , νμ λͺ¨λμ ν΄μλ κ²°κ³Όλ§ λ°λΌλ³΄λ κ΅¬μ‘°κ° λ©λλ€.
2. network-log-coreλ μμ μ μΈ λΌμ΄λΈλ¬λ¦¬μ λλ€.
ν΄λ¦° μν€ν μ² κ΄μ μμ λ§νλ μ»΄ν¬λνΈμ μμ μ±μ΄λ, λ€μκ³Ό κ°μ΅λλ€.
μμ μ μ΄λΌλ κ²μ κ³§ λ³κ²½νκΈ° μ΄λ ΅λ€λ μλ―Έμ΄κ³ , κ·Έλ§νΌ λ§μ μ½λκ° ν΄λΉ μ»΄ν¬λνΈ(λ°°ν¬ κ°λ₯ν μ΅μ λ¨μ)μ μμ‘΄νκ³ μλ€λ λ»μ΄κΈ°λ ν©λλ€.
network-log-coreλ μ΄ κΈ°μ€μ λ§μ‘±νλλ‘ μ€κ³λμμ΅λλ€.
- e2e-autogen, msw-auto-mock, api-recorder λ± μ¬λ¬ νμ λͺ¨λμ΄ μ΄λ₯Ό μ°Έμ‘°νμ§λ§
- network-log-core μ체λ μΈλΆ ꡬνμ μμ‘΄νμ§ μμ΅λλ€
κ·Έ κ²°κ³Ό, νμ λͺ¨λλ€μ λ³κ²½ κ°λ₯μ±μ΄ λμ ꡬνμ΄ μλλΌ μμ μ μΈ μμ μ€ν(NetworkLog νμ ) μλ§ μμ‘΄νκ² λμκ³ , ꡬ쑰 μ μ²΄κ° λ³κ²½μ ν¨μ¬ λ μ·¨μ½ν΄μ‘μ΅λλ€.
3. μμ‘΄μ±μ΄ μμ λ©λλ€.
μ΄ κ΅¬μ‘°μμλ api-recorderλ har-to-network-logκ° μ체μ μΈ κΈ°μ€ μΈν°νμ΄μ€λ₯Ό μ μνμ§ μμ΅λλ€. λμ , network-log-coreκ° μ μνλ μΈν°νμ΄μ€μ νμ μ κΈ°μ€μΌλ‘ ꡬνν©λλ€. μ¦ νμ ꡬν체(api-recorder, har-to-network-log)κ° μμ λͺ¨λμ΄ μ μν κ³μ½μ ꡬννλ κ΅¬μ‘°κ° λλ©΄μ μμ‘΄μ±μ΄ λͺ νν μμ λ©λλ€. ν΄λμ€ λ¨μκ° μλλΌ λΌμ΄λΈλ¬λ¦¬ λ¨μμμ DIPλ₯Ό μ μ©ν μ¬λ‘λΌκ³ λ³Ό μ μμ΅λλ€.
μ 리νμλ©΄, μ ꡬ쑰 λλΆμ network-logλ₯Ό ν΅ν μνκ³λ₯Ό νμ₯ν΄λκ°λλΌλ κΈ°μ‘΄ νμ λͺ¨λλ€μ μ ν μν₯μ λ°μ§ μκ³ , νμ λͺ¨λ κ° μ§μ μ μΈ μμ‘΄μ±λ μ¬λΌμ‘μΌλ©° μλ‘μ΄ μ λ ₯ ν¬λ§·μ΄λ νμ© λꡬλ₯Ό μΆκ°νκΈ°λ μ©μ΄ν΄μ‘μ΅λλ€.
λ§λ¬΄λ¦¬
μ΄λ² κΈμμλ λ€νΈμν¬ λ‘κ·Έ λꡬλ€μ νμ₯νλ κ³Όμ μμ λλ¬λ ꡬ쑰μ λ¬Έμ λ₯Ό μ΄λ»κ² μ€κ³λ‘ νμ΄λλμ§ μ 리νμ΅λλ€. λ€μ κΈμμλ μ΄ μ€κ³λ₯Ό κΈ°λ°μΌλ‘ μ€μ λΌμ΄λΈλ¬λ¦¬λ₯Ό ꡬνν κ³Όμ κ³Ό μ½λ λ 벨μ μ νλ€μ λ€λ€λ³Ό μμ μ λλ€.
μ΄λ² μ¬λ‘λ νλ‘ νΈμλ νκ²½μμ DIP(Dependency Inversion Principle) λ₯Ό μ μ©ν κ²½νμ΄κΈ°λ ν©λλ€. ν΄λ¦° μν€ν μ²μμ λ§νλ μμΉλ€μ λ³΄ν΅ λ°±μλλ κ°μ²΄μ§ν₯ μΈμ΄ μ€μ¬μΌλ‘ μ€λͺ λμ§λ§, μ΄λ² μμ μ ν΅ν΄ νλ‘ νΈμλμμλ λͺ¨λ λ¨μ, μ€ν λ¨μλ‘ μΆ©λΆν 체κ°ν μ μλ€λ κ±Έ λκΌμ΅λλ€. νΉν μ»΄ν¬λνΈ μμ λ κ΄μ μμ μμ‘΄μ±μ λ€μ λ°λΌλ³΄κ² λ μ μ΄ μΈμ κΉμμ΅λλ€.
μ΅κ·Ό ν΄λ¦° μν€ν μ²λ₯Ό μ½μΌλ©΄μ "μ΄κ±Έ νλ‘ νΈμλμμ μ΄λμ μ¨λ¨Ήμ μ μμκΉ?"λΌλ κ³ λ―Όμ λ§μ΄ νλλ°, μ½λ λ 벨μμλ λ°λ‘ λ μ€λ₯΄μ§ μλ λ΅μ΄ λͺ¨λ μ€κ³ λ 벨μμ μμ°μ€λ½κ² μ°κ²°λμμ΅λλ€.
μμ¦μ AI λλΆμ μλ‘μ΄ κΈ°μ μ λΉ λ₯΄κ² νμ΅νκ³ μλΉνλ κ²½νμ΄ λ§μμ‘μ§λ§, κ·Έλ΄μλ‘ μ΄λ° κΈ°λ³Έμ μΈ μ€κ³ μμΉλ€μ΄ μ€νλ € λ ν° νμ λ°ννλ€κ³ λλλλ€. AIλ₯Ό μ νμ©νκΈ° μν΄μλΌλ, κ°λμ ν΄λ¦° μν€ν μ² κ°μ μ± μ λ€μ νΌμ³λ³΄λ©° λ΄ μ¬κ³ λ°©μ μ체λ₯Ό μ²μ²ν μ λ°μ΄νΈνλ μκ°μ΄ νμνλ€λ μκ°μ΄ λ€μμ΅λλ€.