사업일지-09 · 10, 에이전트 시대의 MSA 문서 추가
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6f0ecd59a9
commit
92376ae9c2
6 files changed
+7860
No files matched your search
File diff suppressed because it is too large.
Load diff
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
@@ -0,0 +1,492 @@
|
|||||||
|
<!doctype html><html lang="ko"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
<title>에이전트 시대의 MSA</title>
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com"><link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700;900&display=swap" rel="stylesheet">
|
||||||
|
<style>
|
||||||
|
:root{--navy:#0B1F3A;--ink:#0F172A;--teal:#0D9488;--teal-l:#5EEAD4;--amber:#F59E0B;--slate:#64748B;--card:#EEF3F8;--mutedd:#B6C3D6;--bg:#1a2433}
|
||||||
|
*{box-sizing:border-box;margin:0;padding:0}
|
||||||
|
html,body{height:100%;background:var(--bg);font-family:"Noto Sans KR","Noto Sans CJK KR",sans-serif;color:var(--ink)}
|
||||||
|
#stage{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
|
||||||
|
.slide{position:absolute;width:1280px;height:720px;display:none;overflow:hidden;transform-origin:center center}
|
||||||
|
.slide.on{display:block}
|
||||||
|
.slide.light{background:#fff}.slide.dark{background:var(--navy);color:#fff}
|
||||||
|
.inner{position:absolute;inset:38px 64px 56px}
|
||||||
|
footer{position:absolute;left:64px;bottom:20px;font-size:13px;color:var(--slate)}
|
||||||
|
.pg{position:absolute;right:64px;bottom:20px;font-size:13px;color:var(--slate)}.dark .pg{color:var(--mutedd)}
|
||||||
|
.notes{display:none}
|
||||||
|
h2{font-size:34px;font-weight:700;color:var(--navy);text-align:center;height:56px;line-height:56px}
|
||||||
|
.lead{font-size:18px;color:var(--slate);margin:6px 0 22px}
|
||||||
|
.t-steps h2,.t-code h2{margin-bottom:22px}.t-analogy h2{margin-bottom:28px}
|
||||||
|
h3{font-size:20px;font-weight:700;color:var(--navy)}
|
||||||
|
p{font-size:18px;line-height:1.5}.sm{font-size:15px}.muted{color:var(--slate)}.muted-d{color:var(--mutedd)}.teal{color:var(--teal)}
|
||||||
|
.card{background:var(--card);border-radius:14px;padding:22px}
|
||||||
|
.ic{display:inline-flex;align-items:center;justify-content:center;flex:none}.ic svg{width:100%;height:100%}
|
||||||
|
.circ{width:56px;height:56px;border-radius:50%;background:var(--teal);color:#fff;padding:14px}
|
||||||
|
.circ.lg{width:70px;height:70px;padding:17px}.circ.xl{width:112px;height:112px;padding:28px}.circ.sm{width:36px;height:36px;padding:9px}
|
||||||
|
.circ.amber{background:var(--amber)}.circ.navy{background:var(--navy)}
|
||||||
|
.pill{display:inline-block;border-radius:99px;padding:4px 14px;font-size:14px;font-weight:700;color:#fff;background:var(--teal);white-space:nowrap}
|
||||||
|
.pill.amber{background:var(--amber)}.pill.slate{background:var(--slate)}
|
||||||
|
.row-sb{display:flex;align-items:center;justify-content:space-between;gap:10px}
|
||||||
|
.grid{display:grid;gap:24px}.g4{grid-template-columns:repeat(4,1fr);grid-auto-rows:204px}.g3{grid-template-columns:repeat(3,1fr);height:430px}
|
||||||
|
.g2{grid-template-columns:repeat(2,1fr);grid-auto-rows:200px}.g2.tight{grid-auto-rows:128px;gap:16px 24px}
|
||||||
|
.tile h3{margin-top:22px}.tile p{margin-top:4px}.tile.center{text-align:center}.tile.center .ic{margin:0 auto}.tile.center h3{margin-top:16px}
|
||||||
|
.num{color:var(--slate);font-size:15px}
|
||||||
|
.vcard h3.big{font-size:24px;margin:26px 0 12px}
|
||||||
|
.hcard{display:flex;gap:22px;align-items:center}.hcard>div{flex:1}.hcard p{margin-top:8px}
|
||||||
|
.sm-card{padding:16px 22px}.sm-card p{font-size:16px;margin-top:4px}
|
||||||
|
.title-l{position:absolute;left:24px;top:110px;width:640px}
|
||||||
|
.kicker{color:var(--teal-l);font-weight:700;font-size:17px}
|
||||||
|
h1{font-size:64px;font-weight:900;line-height:1.2;margin:10px 0}
|
||||||
|
.sub{font-size:26px;line-height:1.45}.meta{color:var(--mutedd);font-size:17px;margin-top:60px}
|
||||||
|
.net{position:absolute;right:30px;top:60px;width:380px;height:340px}.nodes{position:absolute;right:30px;top:60px;width:380px;height:340px}
|
||||||
|
.node{position:absolute;width:110px;height:110px;margin:-55px;border-radius:50%;background:var(--teal);color:#fff;padding:28px;display:flex}
|
||||||
|
.node.amber{background:var(--amber)}
|
||||||
|
.sec{position:absolute;left:40px;top:120px;width:760px}.no{font-size:92px;font-weight:900;color:var(--teal-l);line-height:1}
|
||||||
|
.ghost{position:absolute;right:40px;top:150px;width:360px;height:360px;color:var(--teal-l);opacity:.18}
|
||||||
|
.sm-ghost{width:280px;height:280px;top:40px}
|
||||||
|
.ana{display:flex;align-items:center;gap:0}.side{flex:1;height:370px;padding:26px 30px}
|
||||||
|
.side h3{font-size:23px;margin:10px 0 16px}.side ul{padding-left:22px}.side li{font-size:18px;line-height:1.5;margin-bottom:10px}
|
||||||
|
.approx{width:56px;height:56px;margin:0 -12px;z-index:1;border-radius:50%;background:#fff;border:2px solid var(--teal);color:var(--teal);font-size:26px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none}
|
||||||
|
.take{margin-top:22px;background:rgba(13,148,136,.12);color:var(--teal);font-weight:700;font-size:20px;border-radius:12px;padding:14px 26px}
|
||||||
|
.flow{display:flex;align-items:stretch;gap:0;height:350px}.step{flex:1;text-align:center;display:flex;flex-direction:column;align-items:center;padding:24px 16px}
|
||||||
|
.step h3{margin:16px 0 10px;font-size:19px}.step p{font-size:17px}.step p.sm{font-size:15.5px}
|
||||||
|
.arrow{color:var(--teal);font-size:26px;display:flex;align-items:center;padding:0 10px}
|
||||||
|
.note{margin-top:22px;background:rgba(245,158,11,.16);border-radius:12px;padding:14px 26px;font-size:17px}
|
||||||
|
table{width:100%;border-collapse:collapse;font-size:18px}th{background:var(--teal);color:#fff;text-align:left;padding:14px 14px}
|
||||||
|
td{padding:14px;border-bottom:1px solid #D5DEE8}tbody tr:nth-child(odd){background:var(--card)}td:first-child{color:var(--teal);font-weight:700}
|
||||||
|
.stepwrap{display:flex;gap:26px;height:500px}.panel{width:340px;flex:none;background:var(--navy);border-radius:14px;color:#fff;padding:26px 30px;display:flex;flex-direction:column}
|
||||||
|
.steplbl{color:var(--teal-l);font-size:18px;text-align:center}.panel .ic{margin:22px auto 40px}.panel small{color:var(--amber);font-weight:700;font-size:15px}.panel p{margin-top:6px}
|
||||||
|
.items{list-style:none;flex:1;display:flex;flex-direction:column;gap:12px}.items li{flex:1;display:flex;align-items:center;gap:20px;padding:12px 24px}
|
||||||
|
.items .n{width:46px;height:46px;border-radius:50%;background:var(--teal);color:#fff;font-weight:700;font-size:19px;display:flex;align-items:center;justify-content:center;flex:none}
|
||||||
|
.items p{font-size:16px;margin-top:2px}
|
||||||
|
.codewrap{display:flex;gap:30px;height:430px}.checks{list-style:none;width:380px;flex:none;display:flex;flex-direction:column;justify-content:space-around}
|
||||||
|
.checks li{display:flex;gap:16px;align-items:flex-start}.checks p{font-size:16px}
|
||||||
|
pre{flex:1;background:var(--navy);color:#E2E8F0;border-radius:14px;padding:22px 26px;font:15px/1.6 ui-monospace,"Courier New",monospace;overflow:auto;white-space:pre}
|
||||||
|
.close{position:absolute;left:40px;top:80px;width:780px}.close .sub{font-size:23px;margin:10px 0 50px}
|
||||||
|
.checks.d{width:auto}.checks.d li{align-items:center;margin-bottom:22px;font-size:20px}
|
||||||
|
.circ.slate{background:var(--slate)}.circ.rose,.pill.rose{background:#E11D48}.circ.teal{background:var(--teal)}.pill.teal{background:var(--teal)}
|
||||||
|
.approx.vs{font-size:17px}
|
||||||
|
.title-l h1{font-size:54px}.title-l .meta{margin-top:40px}
|
||||||
|
.node .bot{position:absolute;right:-14px;top:-14px;width:50px;height:50px;border-radius:50%;background:var(--amber);padding:12px;display:flex}
|
||||||
|
.arch{display:flex;gap:26px;height:390px}.abox{display:flex;flex-direction:column;gap:12px}.mono{width:420px}.msa{flex:1}
|
||||||
|
.ux{background:var(--amber);color:#fff;font-weight:700;text-align:center;border-radius:10px;padding:10px;font-size:16px}
|
||||||
|
.mods{display:flex;gap:12px;flex:1}.mods div{flex:1;background:var(--teal);color:#fff;font-weight:700;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px}
|
||||||
|
.db{background:var(--navy);color:#fff;font-weight:700;border-radius:50%/22px;display:flex;align-items:center;justify-content:center;font-size:15px;height:58px;width:130px}
|
||||||
|
.db.big{width:auto;height:64px}
|
||||||
|
.amber-t{color:var(--amber);font-size:14px}
|
||||||
|
.msarow{display:flex;gap:14px;flex:1}.gw{width:110px;background:var(--amber);color:#fff;font-weight:700;border-radius:10px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:16px}
|
||||||
|
.svcs{flex:1;display:flex;flex-direction:column;justify-content:space-around}.svcrow{display:flex;align-items:center;gap:14px}
|
||||||
|
.arr{color:var(--slate);font-size:22px}.svc{background:var(--teal);color:#fff;font-weight:700;border-radius:10px;padding:16px 0;width:190px;text-align:center;font-size:16px}
|
||||||
|
.circ.sm.amber{width:46px;height:46px;padding:11px}
|
||||||
|
pre.prose{font:16px/1.65 "Noto Sans KR","Noto Sans CJK KR",sans-serif;white-space:pre-wrap}
|
||||||
|
pre.dense{font-size:13.5px;line-height:1.5}
|
||||||
|
#bar{position:fixed;left:0;bottom:0;height:4px;background:var(--teal);transition:width .2s}
|
||||||
|
#hud{position:fixed;right:14px;bottom:12px;display:flex;gap:8px;z-index:9}
|
||||||
|
#hud button{background:rgba(255,255,255,.12);color:#fff;border:0;border-radius:8px;padding:8px 12px;font:600 14px "Noto Sans KR",sans-serif;cursor:pointer}
|
||||||
|
#hud button:hover{background:var(--teal)}
|
||||||
|
#noteview{position:fixed;left:0;right:0;bottom:0;max-height:30%;overflow:auto;background:#0b1220ee;color:#e2e8f0;padding:14px 24px;font-size:16px;display:none;z-index:8}
|
||||||
|
body.shownotes #noteview{display:block}
|
||||||
|
@media print{@page{size:1280px 720px;margin:0}html,body{background:#fff}#stage{position:static;display:block}
|
||||||
|
.slide{display:block!important;position:relative;transform:none!important;page-break-after:always;break-after:page}#hud,#bar,#noteview{display:none!important}
|
||||||
|
*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
|
||||||
|
</style></head><body>
|
||||||
|
<main id="stage"><section class="slide dark t-title" data-i="0" aria-label="슬라이드 1">
|
||||||
|
<div class="inner"><div class="title-l"><p class="kicker">마이크로서비스 아키텍처 · 2026 개정판</p><h1>에이전트 시대의<br>마이크로서비스</h1>
|
||||||
|
<p class="sub">바이브 코딩과 코딩 에이전트로 다시 쓰는 MSA</p><p class="meta">이즈잇소프트 채문창 · 2022 원본 → 2026 개정</p></div>
|
||||||
|
<svg class="net" viewBox="0 0 380 400"><g stroke="#0D9488" stroke-width="3" stroke-dasharray="8 7">
|
||||||
|
<line x1="60" y1="200" x2="300" y2="60"/><line x1="60" y1="200" x2="300" y2="200"/><line x1="60" y1="200" x2="300" y2="340"/></g></svg>
|
||||||
|
<div class="nodes"><div class="node" style="left:60px;top:200px"><span class="ic "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"></path></svg></span></div><div class="node" style="left:300px;top:60px"><span class="ic "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path></svg></span><span class="bot"><span class="ic "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span></span></div><div class="node" style="left:300px;top:200px"><span class="ic "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z"></path></svg></span><span class="bot"><span class="ic "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span></span></div><div class="node" style="left:300px;top:340px"><span class="ic "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"></path></svg></span><span class="bot"><span class="ic "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span></span></div></diLine truncated
|
||||||
|
<span class="pg">1</span>
|
||||||
|
<aside class="notes">2022년에 만든 MSA 강의를 코딩 에이전트가 보편화된 2026년 기준으로 다시 썼습니다. 원칙은 그대로 두고, '누가 코드를 쓰는가'가 바뀌면서 달라진 비용 구조와 실무 방법을 다룹니다.</aside></section>
|
||||||
|
<section class="slide light t-compare" data-i="1" aria-label="슬라이드 2">
|
||||||
|
<div class="inner"><h2>2022년 이후, 무엇이 바뀌었나</h2><div class="ana">
|
||||||
|
<div class="card side"><div class="row-sb"><span class="pill slate">2022 원본</span><span class="ic circ lg slate"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"></path></svg></span></div>
|
||||||
|
<h3>사람이 코드를 쓴다</h3><ul><li>서비스 하나 = 개발팀 하나</li><li>병목은 구현 속도와 인력</li><li>MSA는 큰 조직의 전유물</li></ul></div><div class="approx">→</div>
|
||||||
|
<div class="card side"><div class="row-sb"><span class="pill ">2026 지금</span><span class="ic circ lg "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span></div>
|
||||||
|
<h3>에이전트가 코드를 쓴다</h3><ul><li>서비스 하나 = 사람 1명 + 에이전트 N</li><li>병목은 명세 · 검증 · 운영</li><li>1인 개발자도 MSA를 만들 수 있다</li></ul></div></div>
|
||||||
|
<div class="take">MSA의 원칙은 그대로, 바뀐 것은 '누가 · 얼마나 빨리' 만드느냐입니다</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">2</span>
|
||||||
|
<aside class="notes">핵심 메시지: 코드 작성 비용은 거의 0에 가까워졌지만, 분산 시스템의 운영 비용과 설계 실수의 비용은 그대로입니다. 오히려 잘못된 설계도 빨리 만들어집니다.</aside></section>
|
||||||
|
<section class="slide light t-agenda" data-i="2" aria-label="슬라이드 3">
|
||||||
|
<div class="inner"><h2>오늘의 순서</h2><p class="lead">2022 원본의 흐름을 유지하고, 각 장을 에이전트 관점으로 개정했습니다</p><div class="grid g4"><div class="card tile">
|
||||||
|
<div class="row-sb"><span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"></path></svg></span><b class="num">01</b></div>
|
||||||
|
<h3>MSA 다시 보기</h3><p class="muted sm">모놀리스 · 정의 · 장점 재평가</p></div><div class="card tile">
|
||||||
|
<div class="row-sb"><span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span><b class="num">02</b></div>
|
||||||
|
<h3>코딩 에이전트</h3><p class="muted sm">바이브 코딩과 에이전트의 원리</p></div><div class="card tile">
|
||||||
|
<div class="row-sb"><span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z"></path></svg></span><b class="num">03</b></div>
|
||||||
|
<h3>에이전트로 설계</h3><p class="muted sm">경계 찾기 · 계약 우선</p></div><div class="card tile">
|
||||||
|
<div class="row-sb"><span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"></path></svg></span><b class="num">04</b></div>
|
||||||
|
<h3>에이전트로 구현</h3><p class="muted sm">구현요소 6가지 개정</p></div><div class="card tile">
|
||||||
|
<div class="row-sb"><span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"></path></svg></span><b class="num">05</b></div>
|
||||||
|
<h3>문제점과 해결책</h3><p class="muted sm">원본 8가지 + 새 함정</p></div><div class="card tile">
|
||||||
|
<div class="row-sb"><span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z"></path></svg></span><b class="num">06</b></div>
|
||||||
|
<h3>팀 운영</h3><p class="muted sm">사람 1 + 에이전트 N</p></div><div class="card tile">
|
||||||
|
<div class="row-sb"><span class="ic circ amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"></path></svg></span><b class="num">07</b></div>
|
||||||
|
<h3>실습</h3><p class="muted sm">주문 시스템 3개 서비스</p></div><div class="card tile">
|
||||||
|
<div class="row-sb"><span class="ic circ amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z"></path></svg></span><b class="num">08</b></div>
|
||||||
|
<h3>정리 · 과제</h3><p class="muted sm">2022 → 2026 한 장 요약</p></div></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">3</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide dark t-section" data-i="3" aria-label="슬라이드 4">
|
||||||
|
<div class="inner"><div class="sec"><div class="no">01</div><h1>MSA 다시 보기</h1><p class="sub muted-d">변하지 않은 원칙과 달라진 비용</p></div><span class="ic ghost"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z"></path></svg></span></div>
|
||||||
|
<span class="pg">4</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-arch" data-i="4" aria-label="슬라이드 5">
|
||||||
|
<div class="inner"><h2>모놀리스 vs MSA — 그리고 서비스마다 에이전트</h2><p class="lead">원본의 사용자 · 상품 · 주문 예제를 그대로 가져왔습니다</p><div class="arch">
|
||||||
|
<div class="card abox mono"><span class="pill slate">모놀리스</span>
|
||||||
|
<div class="ux">UX · 프론트엔드</div><div class="mods"><div>사용자</div><div>상품</div><div>주문</div></div>
|
||||||
|
<div class="db big">공유 데이터베이스 1개</div></div>
|
||||||
|
<div class="card abox msa"><div class="row-sb"><span class="pill">MSA</span><b class="amber-t">에이전트</b></div>
|
||||||
|
<div class="msarow"><div class="gw">API<br>Gateway</div><div class="svcs"><div class="svcrow"><span class="arr">➜</span><div class="svc">사용자 서비스</div><div class="db">사용자 DB</div><span class="ic circ sm amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span></div><div class="svcrow"><span class="arr">➜</span><div class="svc">상품 서비스</div><div class="db">상품 DB</div><span class="ic circ sm amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span></div><div class="svcrow"><span class="arr">➜</span><div class="svc">주문 서비스</div><div class="db">주문 DB</div><span class="ic circ sm amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span></div></div></div></div>
|
||||||
|
</div><div class="note">서비스 경계 = 데이터 소유 경계 = 에이전트 한 세션이 맡는 작업 범위</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">5</span>
|
||||||
|
<aside class="notes">원본 5~6쪽 그림의 개정판입니다. 오른쪽 각 서비스 옆의 로봇 아이콘이 핵심: 서비스가 작고 경계가 분명할수록 에이전트가 전체를 이해하고 정확히 수정합니다.</aside></section>
|
||||||
|
<section class="slide light t-table" data-i="5" aria-label="슬라이드 6">
|
||||||
|
<div class="inner"><h2>MSA 정의 — 2022 원문과 2026 보완</h2><p class="lead">원칙은 한 줄도 버리지 않았습니다. 에이전트 시대에 맞는 해석만 덧붙였습니다</p><table style="font-size:16.900000000000002px"><colgroup><col style="width:17.77777777777778%"><col style="width:37.77777777777778%"><col style="width:44.44444444444444%"></colgroup>
|
||||||
|
<thead><tr><th>원칙</th><th>2022 원문</th><th>2026 보완</th></tr></thead>
|
||||||
|
<tbody><tr><td>작은 서비스</td><td>작은 서비스의 결합으로 하나의 앱</td><td>에이전트 한 세션이 통째로 이해할 크기</td></tr><tr><td>독립 배포</td><td>완전 자동화된 개발 · 배포</td><td>에이전트 PR을 CI가 자동 검증 후 배포</td></tr><tr><td>중앙 관리 최소</td><td>최소한의 중앙 관리 체계</td><td>중앙엔 계약(API 스키마)과 규칙 파일만</td></tr><tr><td>폴리글랏</td><td>멀티 언어 · 멀티 저장소</td><td>언어 장벽은 낮아짐, 리뷰 · 운영 부담은 그대로</td></tr><tr><td>독립 데이터</td><td>서비스별 데이터 저장소</td><td>변하지 않음 — 가장 중요한 원칙</td></tr></tbody></table></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">6</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-cards" data-i="6" aria-label="슬라이드 7">
|
||||||
|
<div class="inner"><h2>MSA 장점, 에이전트 시대에 다시 매기기</h2><p class="lead">원본 8쪽의 장점 목록을 세 가지로 다시 분류했습니다</p><div class="grid g3">
|
||||||
|
<div class="card vcard"><div class="row-sb"><span class="ic circ lg teal"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"></path></svg></span><span class="pill teal">강화</span></div><h3 class="big">더 강해진 장점</h3><p>작은 코드베이스 = 에이전트 정확도 상승.<br>서비스별로 에이전트를 병렬로 돌려 개발 속도가 배로 늘어남.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card vcard"><div class="row-sb"><span class="ic circ lg slate"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z"></path></svg></span><span class="pill slate">불변</span></div><h3 class="big">그대로인 비용</h3><p>네트워크 호출 지연, 분산 데이터 정합성, 배포 · 모니터링 대상 증가.<br>에이전트가 줄여주지 않음.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card vcard"><div class="row-sb"><span class="ic circ lg rose"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z"></path></svg></span><span class="pill rose">주의</span></div><h3 class="big">새로 생긴 위험</h3><p>만들기가 너무 쉬워 서비스를 남발.<br>10분 만에 '분산 모놀리스'가 완성될 수 있음.</p>
|
||||||
|
</div></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">7</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-flow" data-i="7" aria-label="슬라이드 8">
|
||||||
|
<div class="inner"><h2>그래서 처음부터 MSA? — 모놀리스 먼저</h2><p class="lead">에이전트 덕분에 리팩터링 비용이 낮아져 '나중에 쪼개기'가 쉬워졌습니다</p><div class="flow"><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"></path></svg></span>
|
||||||
|
<h3>모듈러 모놀리스</h3><p class="">한 저장소 · 한 배포, 폴더로 도메인 분리</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"></path></svg></span>
|
||||||
|
<h3>경계 검증</h3><p class="">모듈 간 호출은 공개 인터페이스로만</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z"></path></svg></span>
|
||||||
|
<h3>분리 신호 감지</h3><p class="">부하 · 배포 주기 · 팀이 달라지는 모듈</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z"></path></svg></span>
|
||||||
|
<h3>필요한 것만 분리</h3><p class="">에이전트가 모듈을 서비스로 추출</p></div></div><div class="note">1인 창업 · 초기 서비스는 모듈러 모놀리스로 충분한 경우가 대부분입니다 (Martin Fowler, MonolithFirst)</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">8</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-flow" data-i="8" aria-label="슬라이드 9">
|
||||||
|
<div class="inner"><h2>SoA · ESB에서 에이전트 인터페이스까지</h2><p class="lead">원본 10~11쪽의 역사에 한 칸을 더했습니다</p><div class="flow"><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z"></path></svg></span>
|
||||||
|
<h3>SOA · ESB</h3><p class="">2000년대, 중앙 버스와 분산 트랜잭션 — 무거움</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"></path></svg></span>
|
||||||
|
<h3>API Gateway</h3><p class="">2010년대 MSA, 입구 하나 · 서비스는 독립</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z"></path></svg></span>
|
||||||
|
<h3>서비스 메시</h3><p class="">쿠버네티스 위 사이드카로 통신 · 보안 · 관측</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z"></path></svg></span>
|
||||||
|
<h3>MCP 인터페이스</h3><p class="">사람뿐 아니라 AI 에이전트가 서비스를 호출</p></div></div><div class="note">교훈은 같습니다: 똑똑한 중앙(ESB)이 아니라 '똑똑한 끝점, 단순한 파이프'</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">9</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide dark t-section" data-i="9" aria-label="슬라이드 10">
|
||||||
|
<div class="inner"><div class="sec"><div class="no">02</div><h1>코딩 에이전트 이해</h1><p class="sub muted-d">노드 안을 들여다보면 단순한 반복 루프</p></div><span class="ic ghost"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span></div>
|
||||||
|
<span class="pg">10</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-compare" data-i="10" aria-label="슬라이드 11">
|
||||||
|
<div class="inner"><h2>바이브 코딩 vs 에이전트 기반 엔지니어링</h2><div class="ana">
|
||||||
|
<div class="card side"><div class="row-sb"><span class="pill slate">바이브 코딩</span><span class="ic circ lg slate"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z"></path></svg></span></div>
|
||||||
|
<h3>말로 만들고 결과만 본다</h3><ul><li>자연어로 요청, 실행되면 수락</li><li>코드를 다 읽지 않아도 된다</li><li>프로토타입 · 1회성 도구에 강함</li></ul></div><div class="approx vs">vs</div>
|
||||||
|
<div class="card side"><div class="row-sb"><span class="pill ">에이전트 엔지니어링</span><span class="ic circ lg "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z"></path></svg></span></div>
|
||||||
|
<h3>명세와 테스트로 지휘한다</h3><ul><li>계약 · 테스트 · 규칙 파일로 지시</li><li>변경 내용(diff)을 사람이 리뷰</li><li>운영되는 서비스에 필수</li></ul></div></div>
|
||||||
|
<div class="take">MSA를 느낌으로 만들면 분산 모놀리스가 됩니다 — 프로토타입은 바이브로, 서비스는 엔지니어링으로</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">11</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-flow" data-i="11" aria-label="슬라이드 12">
|
||||||
|
<div class="inner"><h2>코딩 에이전트 노드 안 들여다보기</h2><p class="lead">에이전트 = LLM + 도구(파일 · 셸 · git) + 끝날 때까지 도는 반복 루프</p><div class="flow"><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z"></path></svg></span>
|
||||||
|
<h3>규칙 읽기</h3><p class="sm">요청 + AGENTS.md · 명세</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"></path></svg></span>
|
||||||
|
<h3>코드 탐색</h3><p class="sm">관련 파일을 찾아 읽음</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"></path></svg></span>
|
||||||
|
<h3>계획</h3><p class="sm">수정할 파일과 순서 결정</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"></path></svg></span>
|
||||||
|
<h3>수정 · 실행</h3><p class="sm">코드 변경, 테스트 실행</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"></path></svg></span>
|
||||||
|
<h3>검증 · 반복</h3><p class="sm">실패하면 원인 분석 후 재시도</p></div></div><div class="note">그래서 테스트가 없으면 에이전트는 '성공'을 판단할 근거가 없습니다 — 테스트가 곧 지시서</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">12</span>
|
||||||
|
<aside class="notes">과정 철학인 '노드 안을 들여다본다'와 연결: 에이전트는 마법이 아니라 도구 호출을 반복하는 루프입니다. 루프의 종료 조건(테스트 통과)을 사람이 설계해야 합니다.</aside></section>
|
||||||
|
<section class="slide light t-cards" data-i="12" aria-label="슬라이드 13">
|
||||||
|
<div class="inner"><h2>도구 지형 한눈에</h2><p class="lead">도구 이름은 계속 바뀝니다. 유형으로 기억하세요</p><div class="grid g2">
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z"></path></svg></span><div><div class="row-sb"><h3>터미널 에이전트</h3><span class="pill amber">수업 실습</span></div><p>claude · codex · agy — 저장소에서 직접 읽고, 실행하고, 고침</p></div>
|
||||||
|
</div>
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z"></path></svg></span><div><div class="row-sb"><h3>IDE 에이전트</h3><span class="pill amber">편집기</span></div><p>에디터 안에서 자동완성 · 대화 · 다중 파일 편집</p></div>
|
||||||
|
</div>
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z"></path></svg></span><div><div class="row-sb"><h3>원격 에이전트</h3><span class="pill amber">비동기</span></div><p>이슈를 맡기면 클라우드에서 작업 후 PR로 돌려줌</p></div>
|
||||||
|
</div>
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z"></path></svg></span><div><div class="row-sb"><h3>확장 표준</h3><span class="pill amber">연결</span></div><p>MCP(도구 연결), AGENTS.md · 스킬(규칙과 절차)</p></div>
|
||||||
|
</div></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">13</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-code" data-i="13" aria-label="슬라이드 14">
|
||||||
|
<div class="inner"><h2>컨텍스트 엔지니어링 — 규칙 파일 배치</h2><div class="codewrap"><ul class="checks">
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>루트 AGENTS.md</h3><p class="muted">전 서비스 공통 규칙 · 금지사항</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>서비스별 AGENTS.md</h3><p class="muted">도메인 · 계약 위치 · 실행 명령</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>contracts/ 폴더</h3><p class="muted">OpenAPI · 이벤트 스키마 = 단일 진실</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>docs/adr/</h3><p class="muted">결정 이유를 남겨 에이전트도 따름</p></div></li></ul>
|
||||||
|
<pre class=""><code>shop/
|
||||||
|
├─ AGENTS.md # common rules
|
||||||
|
├─ CLAUDE.md # -> see AGENTS.md
|
||||||
|
├─ contracts/
|
||||||
|
│ ├─ user.openapi.yaml
|
||||||
|
│ ├─ order.openapi.yaml
|
||||||
|
│ └─ events.asyncapi.yaml
|
||||||
|
├─ docs/adr/0001-db-per-service.md
|
||||||
|
└─ services/
|
||||||
|
├─ user/ AGENTS.md app/ tests/
|
||||||
|
├─ product/AGENTS.md app/ tests/
|
||||||
|
└─ order/ AGENTS.md app/ tests/</code></pre></div><div class="note">에이전트는 매 세션 기억이 없습니다 — 규칙 파일이 곧 에이전트의 장기 기억입니다</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">14</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide dark t-section" data-i="14" aria-label="슬라이드 15">
|
||||||
|
<div class="inner"><div class="sec"><div class="no">03</div><h1>에이전트와 함께 설계하기</h1><p class="sub muted-d">설계는 사람이 결정하고, 에이전트는 초안과 검토를 돕는다</p></div><span class="ic ghost"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z"></path></svg></span></div>
|
||||||
|
<span class="pg">15</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-steps" data-i="15" aria-label="슬라이드 16">
|
||||||
|
<div class="inner"><h2>서비스 경계 찾기 — 에이전트와 이벤트 스토밍</h2><div class="stepwrap"><div class="panel"><b class="steplbl">BOUNDED CONTEXT</b><span class="ic circ xl"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"></path></svg></span>
|
||||||
|
<small>원본 20쪽 개정</small><p>같은 '고객'도 영업팀 · 배송팀 · 회계팀이 보는 모습이 다르다</p></div><ol class="items">
|
||||||
|
<li class="card"><span class="n">1</span><div><h3>도메인 이야기 수집</h3><p class="muted">요구사항 · 인터뷰 메모를 에이전트에게 제공</p></div></li>
|
||||||
|
<li class="card"><span class="n">2</span><div><h3>도메인 이벤트 뽑기</h3><p class="muted">'주문됨', '결제됨', '재고 부족' 같은 과거형 사건 목록 초안</p></div></li>
|
||||||
|
<li class="card"><span class="n">3</span><div><h3>컨텍스트 맵 초안</h3><p class="muted">이벤트를 묶어 후보 서비스와 소유 데이터를 제안받음</p></div></li>
|
||||||
|
<li class="card"><span class="n">4</span><div><h3>사람이 결정 · ADR 기록</h3><p class="muted">경계는 비즈니스 판단 — 결정 이유를 docs/adr 에 남김</p></div></li></ol></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">16</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-code" data-i="16" aria-label="슬라이드 17">
|
||||||
|
<div class="inner"><h2>프롬프트 예시 — 경계 초안 받기</h2><div class="codewrap"><ul class="checks">
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>역할과 산출물 형식 지정</h3><p class="muted">표 · 목록 등 검토하기 쉬운 형태로</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>결정은 요청하지 않기</h3><p class="muted">후보와 장단점만, 선택은 사람이</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>반대 의견도 요청</h3><p class="muted">'모놀리스로 충분한가?'를 꼭 묻기</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>결과는 ADR 초안으로</h3><p class="muted">합의한 내용만 저장소에 커밋</p></div></li></ul>
|
||||||
|
<pre class="prose"><code>너는 DDD에 익숙한 아키텍트야.
|
||||||
|
docs/requirements.md 를 읽고 다음을 만들어 줘.
|
||||||
|
|
||||||
|
1. 도메인 이벤트 목록 (과거형, 발생 주체 포함)
|
||||||
|
2. 이벤트를 묶은 바운디드 컨텍스트 후보 2~3안
|
||||||
|
3. 각 안의 서비스별 소유 데이터와 동기/비동기 호출
|
||||||
|
4. 각 안의 장단점, 그리고
|
||||||
|
'모듈러 모놀리스로 충분한 이유'가 있다면 그것도
|
||||||
|
|
||||||
|
코드는 아직 작성하지 마. 표로 정리해.</code></pre></div><div class="note">설계 단계에서 코드 생성을 막아야 에이전트가 '빨리 만들기'로 넘어가지 않습니다</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">17</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-flow" data-i="17" aria-label="슬라이드 18">
|
||||||
|
<div class="inner"><h2>계약 우선 — 인터페이스 불일치의 해법</h2><p class="lead">원본 23쪽 문제의 답 — 계약은 사람이 승인하고, 구현은 에이전트가 맡는다</p><div class="flow"><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"></path></svg></span>
|
||||||
|
<h3>명세 작성</h3><p class="sm">OpenAPI · AsyncAPI 초안</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z"></path></svg></span>
|
||||||
|
<h3>사람이 승인</h3><p class="sm">필드 · 오류 코드 · 버전 규칙 확정</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z"></path></svg></span>
|
||||||
|
<h3>코드 생성</h3><p class="sm">에이전트가 서버 스텁 · 클라이언트 생성</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 480 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z"></path></svg></span>
|
||||||
|
<h3>계약 테스트</h3><p class="sm">CI에서 계약 위반 시 머지 차단</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z"></path></svg></span>
|
||||||
|
<h3>구현 · 배포</h3><p class="sm">서비스별로 독립 진행</p></div></div><div class="note">규칙: 계약 파일 변경은 반드시 별도 PR + 사람 리뷰. 에이전트가 계약을 '맞춰서' 고치지 못하게</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">18</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide dark t-section" data-i="18" aria-label="슬라이드 19">
|
||||||
|
<div class="inner"><div class="sec"><div class="no">04</div><h1>에이전트로 구현하기</h1><p class="sub muted-d">원본 12~18쪽 구현요소 6가지의 2026 개정</p></div><span class="ic ghost"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"></path></svg></span></div>
|
||||||
|
<span class="pg">19</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-table" data-i="19" aria-label="슬라이드 20">
|
||||||
|
<div class="inner"><h2>구현요소 6가지, 2026 실무 선택</h2><p class="lead">왼쪽은 원본 그대로, 오른쪽 두 칸이 개정 내용입니다</p><table style="font-size:15.600000000000001px"><colgroup><col style="width:22.22222222222222%"><col style="width:38.88888888888889%"><col style="width:38.88888888888889%"></colgroup>
|
||||||
|
<thead><tr><th>2022 구현요소</th><th>2026 실무 선택</th><th>에이전트 활용 포인트</th></tr></thead>
|
||||||
|
<tbody><tr><td>데이터 분산관리</td><td>서비스별 DB, Outbox, Saga</td><td>스키마 · 마이그레이션 · Saga 테스트 작성</td></tr><tr><td>RESTful / 비동기</td><td>REST · gRPC + Kafka · NATS · Redis Streams</td><td>계약에서 클라이언트 · 컨슈머 생성</td></tr><tr><td>폴리글랏</td><td>Python · Go · TypeScript 중 선택</td><td>언어 장벽 ↓ — 단, 리뷰 가능한 언어로 제한</td></tr><tr><td>DevOps</td><td>GitOps, CI가 에이전트 PR 검증</td><td>Dockerfile · 파이프라인 초안 작성</td></tr><tr><td>클라우드</td><td>컨테이너 + k8s / k3s (온프레미스 포함)</td><td>매니페스트 생성, 리소스 설정 점검</td></tr><tr><td>Design for Failure</td><td>타임아웃 · 재시도 · 서킷브레이커 · 멱등성</td><td>장애 주입 테스트, 트레이스 분석</td></tr></tbody></table></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">20</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-flow" data-i="20" aria-label="슬라이드 21">
|
||||||
|
<div class="inner"><h2>데이터 분산관리 — 분산 트랜잭션 대신 Saga</h2><p class="lead">원본 13쪽 'Not 분산 트랜잭션'을 구현하는 표준 패턴</p><div class="flow"><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"></path></svg></span>
|
||||||
|
<h3>주문 생성</h3><p class="">주문 서비스: 상태 PENDING, 이벤트 발행</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z"></path></svg></span>
|
||||||
|
<h3>재고 예약</h3><p class="">상품 서비스: 재고 차감, '예약됨' 발행</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z"></path></svg></span>
|
||||||
|
<h3>결제</h3><p class="">결제 실패 시 '결제 실패' 이벤트 발행</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"></path></svg></span>
|
||||||
|
<h3>보상 트랜잭션</h3><p class="">재고 복원 → 주문 CANCELLED</p></div></div><div class="note">Outbox 패턴: DB 저장과 이벤트 발행을 한 트랜잭션에 묶어 '저장됐는데 이벤트 유실'을 막음</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">21</span>
|
||||||
|
<aside class="notes">에이전트에게 Saga를 시킬 때는 성공 경로가 아니라 '실패 시나리오 테스트를 먼저 써 줘'라고 요청하는 것이 핵심입니다.</aside></section>
|
||||||
|
<section class="slide light t-code" data-i="21" aria-label="슬라이드 22">
|
||||||
|
<div class="inner"><h2>비동기 이벤트 — 주문 서비스 예시</h2><div class="codewrap"><ul class="checks">
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>FastAPI + Redis Streams</h3><p class="muted">실습 환경에서 가장 가벼운 조합</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>이벤트 이름은 과거형</h3><p class="muted">order.created, stock.reserved</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>멱등성 키 필수</h3><p class="muted">같은 이벤트가 두 번 와도 한 번만 처리</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>스키마는 contracts/</h3><p class="muted">에이전트는 계약을 읽고 구현</p></div></li></ul>
|
||||||
|
<pre class=" dense"><code># services/order/app/main.py
|
||||||
|
import json, uuid, redis
|
||||||
|
from fastapi import FastAPI, Header
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
r = redis.Redis(host="redis")
|
||||||
|
|
||||||
|
@app.post("/orders")
|
||||||
|
def create(body: dict,
|
||||||
|
key: str = Header(alias="Idempotency-Key")):
|
||||||
|
if not r.set(f"idem:{key}", 1, nx=True, ex=86400):
|
||||||
|
return {"status": "duplicate"}
|
||||||
|
oid = str(uuid.uuid4())
|
||||||
|
# save PENDING order + outbox row
|
||||||
|
evt = json.dumps({"id": oid, **body})
|
||||||
|
r.xadd("order.created", {"data": evt})
|
||||||
|
return {"id": oid, "status": "PENDING"}</code></pre></div><div class="note">이 코드도 에이전트가 계약 파일을 읽고 생성한 초안 — 사람은 멱등성 · 오류 처리를 리뷰합니다</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">22</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-code" data-i="22" aria-label="슬라이드 23">
|
||||||
|
<div class="inner"><h2>서비스마다 에이전트 — git worktree 병렬 개발</h2><div class="codewrap"><ul class="checks">
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>서비스별 작업 폴더 분리</h3><p class="muted">에이전트끼리 파일 충돌 없음</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>tmux 창 하나에 에이전트 하나</h3><p class="muted">1일차에 구축한 환경 그대로</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>각자 브랜치 → PR</h3><p class="muted">lazygit 으로 diff 리뷰 후 머지</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>계약은 main 에서만 변경</h3><p class="muted">worktree 에서 계약 수정 금지</p></div></li></ul>
|
||||||
|
<pre class=""><code># one worktree per service
|
||||||
|
$ git worktree add ../shop-user -b feat/user
|
||||||
|
$ git worktree add ../shop-product -b feat/product
|
||||||
|
$ git worktree add ../shop-order -b feat/order
|
||||||
|
|
||||||
|
# tmux: 3 panes, 3 agents
|
||||||
|
$ tmux new -s msa
|
||||||
|
pane 1) cd ../shop-user && claude
|
||||||
|
pane 2) cd ../shop-product && codex
|
||||||
|
pane 3) cd ../shop-order && claude
|
||||||
|
|
||||||
|
# review & merge
|
||||||
|
$ lazygit</code></pre></div><div class="note">사람의 역할은 '동시에 세 명의 개발자에게 일을 나눠 주고 리뷰하는 팀장'입니다</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">23</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-cards" data-i="23" aria-label="슬라이드 24">
|
||||||
|
<div class="inner"><h2>Design for Failure + 관측성</h2><p class="lead">원본 18쪽 — 실패를 전제로 설계하고, 실패를 '보이게' 만든다</p><div class="grid g2">
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z"></path></svg></span><div><div class="row-sb"><h3>타임아웃 · 재시도</h3><span class="pill amber">기본</span></div><p>모든 외부 호출에 타임아웃, 재시도는 지수 백오프로</p></div>
|
||||||
|
</div>
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z"></path></svg></span><div><div class="row-sb"><h3>서킷 브레이커</h3><span class="pill amber">차단</span></div><p>계속 실패하는 서비스는 잠시 끊어 장애 전파를 막음</p></div>
|
||||||
|
</div>
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z"></path></svg></span><div><div class="row-sb"><h3>멱등성</h3><span class="pill amber">중복 방지</span></div><p>재시도와 중복 이벤트에도 결과가 한 번만 반영되게</p></div>
|
||||||
|
</div>
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z"></path></svg></span><div><div class="row-sb"><h3>OpenTelemetry</h3><span class="pill amber">추적</span></div><p>요청 하나의 전 구간 트레이스 — 에이전트에게 보여주면 원인을 함께 찾음</p></div>
|
||||||
|
</div></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">24</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-flow" data-i="24" aria-label="슬라이드 25">
|
||||||
|
<div class="inner"><h2>서비스를 에이전트에게 열기 — MCP</h2><p class="lead">API Gateway가 사람용 입구라면, MCP 서버는 AI 에이전트용 입구입니다</p><div class="flow"><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z"></path></svg></span>
|
||||||
|
<h3>AI 에이전트</h3><p class="">'어제 취소된 주문 보여줘'</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z"></path></svg></span>
|
||||||
|
<h3>MCP 서버</h3><p class="">도구: get_orders, get_stock (읽기 전용부터)</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"></path></svg></span>
|
||||||
|
<h3>API Gateway</h3><p class="">인증 · 권한 · 호출량 제한</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z"></path></svg></span>
|
||||||
|
<h3>주문 · 상품 서비스</h3><p class="">기존 API 그대로 응답</p></div></div><div class="note">쓰기 도구(주문 취소 · 환불)는 사람 승인 단계를 둡니다 — 원본의 '최소 권한' 원칙 그대로</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">25</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide dark t-section" data-i="25" aria-label="슬라이드 26">
|
||||||
|
<div class="inner"><div class="sec"><div class="no">05</div><h1>문제점과 해결책 2026</h1><p class="sub muted-d">원본 19~27쪽 8가지 문제의 개정판</p></div><span class="ic ghost"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"></path></svg></span></div>
|
||||||
|
<span class="pg">26</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-table" data-i="26" aria-label="슬라이드 27">
|
||||||
|
<div class="inner"><h2>문제점과 해결책 ① 설계 · 운영</h2><p class="lead">2022년 해결책은 여전히 유효합니다. 에이전트가 실행 비용을 낮춰 줄 뿐입니다</p><table style="font-size:16.900000000000002px"><colgroup><col style="width:21.11111111111111%"><col style="width:31.11111111111111%"><col style="width:47.77777777777777%"></colgroup>
|
||||||
|
<thead><tr><th>문제</th><th>2022 해결책</th><th>2026 에이전트 활용</th></tr></thead>
|
||||||
|
<tbody><tr><td>서비스 범위 설정</td><td>Bounded Context, DDD</td><td>에이전트와 이벤트 스토밍, 결정은 사람이</td></tr><tr><td>레거시와 공존</td><td>SoA 연동, API G/W</td><td>스트랭글러 피그: 기능 단위 이전 + 회귀 테스트</td></tr><tr><td>운영 오버헤드</td><td>DevOps 배포 자동화</td><td>서비스 템플릿 + 에이전트가 CI/CD · IaC 생성</td></tr><tr><td>인터페이스 불일치</td><td>팀 간 커뮤니케이션</td><td>계약 우선 + CI에서 계약 테스트 강제</td></tr></tbody></table></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">27</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-table" data-i="27" aria-label="슬라이드 28">
|
||||||
|
<div class="inner"><h2>문제점과 해결책 ② 코드 · 데이터 · 테스트</h2><p class="lead">에이전트가 가장 크게 도움이 되는 영역은 '테스트 작성'입니다</p><table style="font-size:16.900000000000002px"><colgroup><col style="width:21.11111111111111%"><col style="width:31.11111111111111%"><col style="width:47.77777777777777%"></colgroup>
|
||||||
|
<thead><tr><th>문제</th><th>2022 해결책</th><th>2026 에이전트 활용</th></tr></thead>
|
||||||
|
<tbody><tr><td>코드 중복</td><td>단일 언어 · 프레임워크</td><td>공통 템플릿 · 스킬로 '같은 방식'의 중복 관리</td></tr><tr><td>데이터 중복</td><td>전체 시스템 관점 고려</td><td>소유 서비스 명시, 이벤트 · CDC로 동기화</td></tr><tr><td>분산 복잡성</td><td>Actor Model, Reactive</td><td>이벤트 기반 + 분산 트레이싱을 에이전트가 분석</td></tr><tr><td>테스트의 어려움</td><td>(상호 테스트 어려움)</td><td>계약 · 통합 테스트를 에이전트가 작성, 시나리오는 사람이</td></tr></tbody></table></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">28</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-checklist" data-i="28" aria-label="슬라이드 29">
|
||||||
|
<div class="inner"><h2>새로 생긴 문제 — 바이브 코딩의 함정</h2><p class="lead">2022년에는 없던 위험입니다. 모두 실제로 자주 일어납니다</p><div class="grid g2 tight"><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z"></path></svg></span><div><h3>분산 모놀리스 양산</h3><p class="muted">서비스는 많은데 동기 호출로 줄줄이 묶임 → 경계부터 재검토</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"></path></svg></span><div><h3>존재하지 않는 API · 패키지</h3><p class="muted">에이전트가 지어낸 이름 → 잠금 파일 · 의존성 검사 필수</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"></path></svg></span><div><h3>비밀키 유출</h3><p class="muted">코드 · 로그에 토큰 하드코딩 → 시크릿 스캔을 CI에</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 480 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z"></path></svg></span><div><h3>테스트를 고쳐서 통과</h3><p class="muted">구현 대신 테스트를 수정 → 테스트 파일 변경은 별도 리뷰</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z"></path></svg></span><div><h3>서비스마다 다른 규칙</h3><p class="muted">세션마다 스타일이 표류 → 공통 AGENTS.md · 린터로 고정</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"></path></svg></span><div><h3>리뷰 병목</h3><p class="muted">생성 속도 > 리뷰 속도 → 작은 PR, 자동 검사 먼저</p></div></div></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">29</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide dark t-section" data-i="29" aria-label="슬라이드 30">
|
||||||
|
<div class="inner"><div class="sec"><div class="no">06</div><h1>개발 팀 운영</h1><p class="sub muted-d">원본 28~32쪽 — 팀의 정의가 바뀌었다</p></div><span class="ic ghost"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z"></path></svg></span></div>
|
||||||
|
<span class="pg">30</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-compare" data-i="30" aria-label="슬라이드 31">
|
||||||
|
<div class="inner"><h2>팀 구성의 변화</h2><div class="ana">
|
||||||
|
<div class="card side"><div class="row-sb"><span class="pill slate">2022 팀</span><span class="ic circ lg slate"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"></path></svg></span></div>
|
||||||
|
<h3>사람 5~9명이 한 서비스</h3><ul><li>피자 두 판 규모의 팀</li><li>기획 · 개발 · 테스트 · 운영 분업</li><li>사람 수가 곧 개발 속도</li></ul></div><div class="approx">→</div>
|
||||||
|
<div class="card side"><div class="row-sb"><span class="pill ">2026 팀</span><span class="ic circ lg "><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"></path></svg></span></div>
|
||||||
|
<h3>사람 1 + 에이전트 N</h3><ul><li>사람은 설계 · 리뷰 · 운영 책임</li><li>에이전트는 구현 · 테스트 · 문서</li><li>리뷰 역량이 곧 개발 속도</li></ul></div></div>
|
||||||
|
<div class="take">책임은 위임할 수 없습니다 — 에이전트가 쓴 코드도 머지한 사람의 코드입니다</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">31</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-cards" data-i="31" aria-label="슬라이드 32">
|
||||||
|
<div class="inner"><h2>원본 팀 운영 원칙 4가지, 2026 버전</h2><p class="lead">지식노동자를 위한 원칙은 에이전트를 다루는 사람에게도 그대로 적용됩니다</p><div class="grid g2">
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"></path></svg></span><div><div class="row-sb"><h3>최적화된 팀 규모</h3><span class="pill amber">29쪽</span></div><p>작은 팀 → 사람 1~2명이 서비스 하나와 에이전트들을 소유</p></div>
|
||||||
|
</div>
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z"></path></svg></span><div><div class="row-sb"><h3>독립적인 팀 운영</h3><span class="pill amber">30쪽</span></div><p>서비스별 AGENTS.md로 자율, 공통 가드레일로 일관성</p></div>
|
||||||
|
</div>
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z"></path></svg></span><div><div class="row-sb"><h3>아키텍처 선택 자율</h3><span class="pill amber">31쪽</span></div><p>선택은 자유, 단 ADR로 이유를 남겨 에이전트도 따르게</p></div>
|
||||||
|
</div>
|
||||||
|
<div class="card hcard"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z"></path></svg></span><div><div class="row-sb"><h3>상향식 개발</h3><span class="pill amber">32쪽</span></div><p>명세 주도(spec-driven) + 작은 반복, 큰 계획 일괄 생성 금지</p></div>
|
||||||
|
</div></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">32</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-checklist" data-i="32" aria-label="슬라이드 33">
|
||||||
|
<div class="inner"><h2>에이전트 가드레일 — 맡기기 전에 정할 것</h2><p class="lead">권한은 작게 시작해서 신뢰가 쌓이면 넓힙니다</p><div class="grid g2 tight"><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z"></path></svg></span><div><h3>샌드박스 · 허용 명령</h3><p class="muted">작업 폴더 밖 접근 금지, 위험 명령은 승인 후 실행</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z"></path></svg></span><div><h3>main 직접 push 금지</h3><p class="muted">모든 변경은 브랜치 → PR → CI → 사람 리뷰</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"></path></svg></span><div><h3>비밀은 환경변수로</h3><p class="muted">.env 는 git 제외, 운영 키는 에이전트에게 주지 않음</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z"></path></svg></span><div><h3>사람 승인 작업</h3><p class="muted">DB 마이그레이션 · 배포 · 데이터 삭제 · 계약 변경</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"></path></svg></span><div><h3>비용 한도</h3><p class="muted">API 사용량 · 실행 시간 상한, 무한 루프 방지</p></div></div><div class="card hcard sm-card">
|
||||||
|
<span class="ic circ amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z"></path></svg></span><div><h3>기록 남기기</h3><p class="muted">에이전트 세션 로그 · PR 설명에 근거를 남김</p></div></div></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">33</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide dark t-section" data-i="33" aria-label="슬라이드 34">
|
||||||
|
<div class="inner"><div class="sec"><div class="no">07</div><h1>실습: 주문 시스템 MSA</h1><p class="sub muted-d">사용자 · 상품 · 주문을 에이전트 3개로</p></div><span class="ic ghost"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z"></path></svg></span></div>
|
||||||
|
<span class="pg">34</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-flow" data-i="34" aria-label="슬라이드 35">
|
||||||
|
<div class="inner"><h2>실습 아키텍처</h2><p class="lead">docker compose 하나로 로컬에서 전부 실행합니다</p><div class="flow"><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z"></path></svg></span>
|
||||||
|
<h3>게이트웨이</h3><p class="sm">프록시 · 인증 헤더 검사</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path></svg></span>
|
||||||
|
<h3>사용자</h3><p class="sm">user 서비스<br>회원 · 로그인<br>users.db</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z"></path></svg></span>
|
||||||
|
<h3>상품</h3><p class="sm">product 서비스<br>상품 · 재고<br>products.db</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"></path></svg></span>
|
||||||
|
<h3>주문</h3><p class="sm">order 서비스<br>주문 · Saga<br>orders.db</p></div><div class="arrow">➜</div><div class="card step"><span class="ic circ lg amber"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z"></path></svg></span>
|
||||||
|
<h3>이벤트 버스</h3><p class="sm">Redis Streams<br>서비스 간 이벤트 전달</p></div></div><div class="note">서비스마다 자기 DB(SQLite)를 가지며, 다른 서비스 DB에 직접 접근하면 실습 감점</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">35</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-steps" data-i="35" aria-label="슬라이드 36">
|
||||||
|
<div class="inner"><h2>실습 진행 순서</h2><div class="stepwrap"><div class="panel"><b class="steplbl">LAB</b><span class="ic circ xl"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"></path></svg></span>
|
||||||
|
<small>진행 방식</small><p>1인 팀장이 에이전트 개발자 세 명을 지휘하는 하루</p></div><ol class="items">
|
||||||
|
<li class="card"><span class="n">1</span><div><h3>명세 · 계약 확정 (사람, 40분)</h3><p class="muted">요구사항 → 이벤트 스토밍 → contracts/ 와 루트 AGENTS.md 작성</p></div></li>
|
||||||
|
<li class="card"><span class="n">2</span><div><h3>병렬 구현 (에이전트, 60분)</h3><p class="muted">worktree 3개 + tmux, 서비스별 에이전트에게 계약 기반 구현 지시</p></div></li>
|
||||||
|
<li class="card"><span class="n">3</span><div><h3>통합 · 계약 테스트 (40분)</h3><p class="muted">docker compose up, 주문 → 재고 예약 → 완료 흐름 확인</p></div></li>
|
||||||
|
<li class="card"><span class="n">4</span><div><h3>장애 주입 (20분)</h3><p class="muted">product 서비스를 멈추고 주문이 보상 처리되는지 확인</p></div></li></ol></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">36</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-code" data-i="36" aria-label="슬라이드 37">
|
||||||
|
<div class="inner"><h2>서비스 에이전트에게 주는 첫 지시</h2><div class="codewrap"><ul class="checks">
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>읽을 파일을 명시</h3><p class="muted">AGENTS.md · 계약 · 요구사항</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>테스트 먼저</h3><p class="muted">실패하는 테스트 → 구현 순서</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>범위 제한</h3><p class="muted">자기 서비스 폴더만 수정</p></div></li>
|
||||||
|
<li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><div><h3>완료 조건 명시</h3><p class="muted">pytest 통과 + 실행 방법 보고</p></div></li></ul>
|
||||||
|
<pre class="prose"><code>services/order/AGENTS.md 와 contracts/order.openapi.yaml,
|
||||||
|
contracts/events.asyncapi.yaml 을 먼저 읽어.
|
||||||
|
|
||||||
|
1. 계약의 모든 엔드포인트에 대한 pytest 를 먼저 작성해.
|
||||||
|
재고 부족 · 결제 실패 · 중복 요청 시나리오를 포함해.
|
||||||
|
2. 테스트가 실패하는 것을 확인한 뒤 구현해.
|
||||||
|
3. services/order/ 밖의 파일과 contracts/ 는 수정하지 마.
|
||||||
|
계약이 이상하면 수정하지 말고 나에게 보고해.
|
||||||
|
4. 끝나면 pytest 결과와 실행 방법을 요약해 줘.</code></pre></div><div class="note">좋은 지시 = 읽을 것 + 순서 + 금지 범위 + 완료 조건</div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">37</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-summary" data-i="37" aria-label="슬라이드 38">
|
||||||
|
<div class="inner"><h2>2022 → 2026 한 장 요약</h2><p class="lead">왼쪽은 원본의 개념, 아래는 2026년의 실천 방법</p><div class="grid g4"><div class="card tile center"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z"></path></svg></span>
|
||||||
|
<h3>모놀리스 vs MSA</h3><p class="teal sm"><b>모듈러 모놀리스 먼저</b></p></div><div class="card tile center"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z"></path></svg></span>
|
||||||
|
<h3>서비스 경계</h3><p class="teal sm"><b>에이전트와 이벤트 스토밍</b></p></div><div class="card tile center"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 384 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"></path></svg></span>
|
||||||
|
<h3>인터페이스</h3><p class="teal sm"><b>계약 우선 + 계약 테스트</b></p></div><div class="card tile center"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"></path></svg></span>
|
||||||
|
<h3>분산 데이터</h3><p class="teal sm"><b>Saga + Outbox</b></p></div><div class="card tile center"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z"></path></svg></span>
|
||||||
|
<h3>DevOps</h3><p class="teal sm"><b>CI가 에이전트 PR 검증</b></p></div><div class="card tile center"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z"></path></svg></span>
|
||||||
|
<h3>장애 대비</h3><p class="teal sm"><b>재시도 · 멱등성 · 추적</b></p></div><div class="card tile center"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 640 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"></path></svg></span>
|
||||||
|
<h3>작은 팀</h3><p class="teal sm"><b>사람 1 + 에이전트 N</b></p></div><div class="card tile center"><span class="ic circ lg"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z"></path></svg></span>
|
||||||
|
<h3>팀의 지식</h3><p class="teal sm"><b>AGENTS.md · ADR</b></p></div></div></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">38</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide light t-table" data-i="38" aria-label="슬라이드 39">
|
||||||
|
<div class="inner"><h2>참고 자료</h2><p class="lead">원본 참고자료에 2026년 기준 자료를 추가했습니다</p><table style="font-size:15.600000000000001px"><colgroup><col style="width:44.44444444444444%"><col style="width:55.55555555555556%"></colgroup>
|
||||||
|
<thead><tr><th>자료</th><th>주소</th></tr></thead>
|
||||||
|
<tbody><tr><td>Martin Fowler — Microservices</td><td>martinfowler.com/articles/microservices.html</td></tr><tr><td>Martin Fowler — MonolithFirst</td><td>martinfowler.com/bliki/MonolithFirst.html</td></tr><tr><td>Chris Richardson — Saga · Outbox 패턴</td><td>microservices.io</td></tr><tr><td>AGENTS.md — 에이전트 규칙 파일</td><td>agents.md</td></tr><tr><td>Model Context Protocol (MCP)</td><td>modelcontextprotocol.io</td></tr><tr><td>OpenTelemetry — 분산 추적</td><td>opentelemetry.io</td></tr><tr><td>(원본 참고) 조대협의 블로그</td><td>bcho.tistory.com/948</td></tr></tbody></table></div>
|
||||||
|
<footer>에이전트 시대의 MSA</footer><span class="pg">39</span>
|
||||||
|
</section>
|
||||||
|
<section class="slide dark t-closing" data-i="39" aria-label="슬라이드 40">
|
||||||
|
<div class="inner"><span class="ic ghost sm-ghost"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z"></path></svg></span><div class="close"><h1>과제와 Q&A</h1><p class="sub">실습한 주문 시스템을 저장소에 올리고, 아래 세 가지를 제출하세요</p>
|
||||||
|
<ul class="checks d"><li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><span class="muted-d">contracts/ · 루트와 서비스별 AGENTS.md · ADR 1건 이상</span></li><li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><span class="muted-d">장애 주입 결과: product 중지 시 주문이 CANCELLED 되는 로그 또는 트레이스</span></li><li><span class="ic circ sm"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" color="currentColor" style="color:currentColor" height="64" width="64" xmlns="http://www.w3.org/2000/svg"><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path></svg></span><span class="muted-d">회고 한 단락: 에이전트에게 맡긴 일과 내가 직접 결정한 일의 구분</span></li></ul></div></div>
|
||||||
|
<span class="pg">40</span>
|
||||||
|
</section></main>
|
||||||
|
<div id="bar"></div><div id="noteview"></div>
|
||||||
|
<div id="hud"><button id="prev" aria-label="이전">◀</button><button id="nt">노트</button><button id="fs">전체화면</button><button id="pr">PDF 저장</button><button id="next" aria-label="다음">▶</button></div>
|
||||||
|
<script>
|
||||||
|
const S=[...document.querySelectorAll('.slide')];let i=0;
|
||||||
|
function fit(){const k=Math.min(innerWidth/1280,innerHeight/720);S.forEach(s=>s.style.transform='scale('+k+')')}
|
||||||
|
function go(n){i=Math.max(0,Math.min(S.length-1,n));S.forEach((s,j)=>s.classList.toggle('on',j===i));
|
||||||
|
document.getElementById('bar').style.width=((i+1)/S.length*100)+'%';const nt=S[i].querySelector('.notes');
|
||||||
|
document.getElementById('noteview').textContent=nt?nt.textContent:'(강사 노트 없음)';try{history.replaceState(null,'','#'+(i+1))}catch(e){}}
|
||||||
|
addEventListener('resize',fit);
|
||||||
|
addEventListener('keydown',e=>{if(['ArrowRight','PageDown',' ','Enter'].includes(e.key)){e.preventDefault();go(i+1)}
|
||||||
|
else if(['ArrowLeft','PageUp','Backspace'].includes(e.key)){e.preventDefault();go(i-1)}else if(e.key==='Home')go(0);else if(e.key==='End')go(S.length-1);
|
||||||
|
else if(e.key==='n')document.body.classList.toggle('shownotes');else if(e.key==='f')toggleFs()});
|
||||||
|
let tx=null;addEventListener('touchstart',e=>tx=e.touches[0].clientX);addEventListener('touchend',e=>{if(tx===null)return;const dx=e.changedTouches[0].clientX-tx;if(Math.abs(dx)>40)go(i+(dx<0?1:-1));tx=null});
|
||||||
|
function toggleFs(){document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()}
|
||||||
|
prev.onclick=()=>go(i-1);next.onclick=()=>go(i+1);nt.onclick=()=>document.body.classList.toggle('shownotes');fs.onclick=toggleFs;pr.onclick=()=>print();
|
||||||
|
fit();go((parseInt(location.hash.slice(1))||1)-1);
|
||||||
|
</script></body></html>
|
||||||
Binary file not shown.
Reference in new issue
Block a user