나에게 필요한 지식과 기술을 검색해 보세요.

우수리뷰어, 설마 내 지인인가?

코딩과 글쓰기 능력은 서로 정비례한다?

AI 시대, 지금 필요한 공부

평생교육이용권으로 실무 강의를 더 가볍게

에이전트 도입을 고민한다면

오버 엔지니어링을 피하는 방법

0/0

채널.H

AI 코딩에 테스트와 명세가 필요한 이유: “일단 만들어줘”의 함정

AI 코딩에 테스트와 명세가 필요한 이유: “일단 만들어줘”의 함정

AI 코딩 도구를 처음 써보면 누구나 한 번쯤 이런 요청을 하게 됩니다. “TODO 앱 하나 만들어줘.”“로그인 기능 붙여줘.”“관리자 페이지도 만들어줘.” 놀랍게도 AI는 꽤 그럴듯한 결과물을 만들어냅니다. 예전 같으면 며칠이 걸렸을 기능이 몇 분 만에 화면으로 나타나고, API가 만들어지고, 테스트 코드까지 붙기도 합니다. 개발자는 더 이상 모든 코드를 직접 타이핑하지 않아도 됩니다. 이제 AI는 단순한 자동완성 도구를 넘어, 요구사항을 이해하고 코드를 생성하며 테스트와 리팩터링까지 도와주는 개발 파트너에 가까워지고 있습니다. 아니, 그런 줄 알았습니다. 하지만 바로 이 지점에서 새로운 문제가 시작됩니다. 지난 글에서는 이 변화 속에서 개발자의 역할이 어떻게 달라지는지 살펴봤습니다. AI 시대의 개발자는 단순 구현자라기보다, AI와 함께 일하는 방식 자체를 설계하는 사람에 가까워지고 있습니다. 그렇다면 다음 질문은 자연스럽게 이어집니다. AI에게 코드를 맡길 수 있다면, 그 결과물은 어떻게 믿을 수 있을까요? 결국 AI가 빠르게 코드를 만드는 시대일수록, 개발자는 더 명확하게 명세를 쓰고 더 철저하게 테스트해야 합니다. 명세는 AI에게 “무엇을 만들 것인가”를 알려주는 기준이고, 테스트는 AI가 만든 코드가 그 기준을 제대로 만족하는지 확인하는 안전장치입니다. 이번 글에서는 “일단 만들어줘” 방식이 왜 위험할 수 있는지, 그리고 AI 코딩에 왜 테스트와 명세가 필요한지 살펴보겠습니다. AI는 빠르지만, 방향을 보장하지 않는다 AI 코딩 도구의 가장 큰 매력은 속도입니다. 예전에는 코드를 한 줄씩 직접 작성해야 했기 때문에, 개발자는 자연스럽게 “어떻게 만들 것인가”를 먼저 고민했습니다. 코드 한 줄에도 시간이 들었고, 잘못 만든 구조는 나중에 더 큰 비용으로 돌아왔기 때문입니다. 그런데 AI가 코드를 순식간에 만들어주기 시작하면서 상황이 달라졌습니다. 이제는 고민보다 생성이 먼저가 되기 쉽습니다. “일단 만들어보고, 아니면 다시 만들면 되지”라는 접근이 가능해진 것입니다. 실제로 클로드 코드 같은 AI 코딩 도구에게 “TODO 앱 만들어줘”라고 요청하면 몇 분 안에 동작하는 코드가 나옵니다. 화면이 뜨고, 버튼이 동작하고, 데이터가 저장되는 모습을 보면 설계 없이 바로 구현에 들어가고 싶어집니다. 하지만 이것이 바로 “일단 만들어줘” 방식의 함정입니다. AI는 코드를 빠르게 만들 수 있지만, 그 코드가 올바른 방향인지까지 보장해주지는 않습니다. 처음에는 그럴듯하게 동작하던 코드도 요구사항이 구체화될수록 쉽게 흔들릴 수 있습니다. 개인용으로 쓸 TODO 앱인지, 팀 단위로 공유하는 업무 관리 도구인지, SaaS로 서비스할 제품인지, 고객사 내부망에 설치해야 하는 온프레미스 솔루션인지에 따라 필요한 구조는 완전히 달라집니다. 예를 들어 처음에는 단순히 “TODO 웹 애플리케이션 만들어줘”라고 요청했다고 해봅시다. AI는 개인용 CRUD 앱을 만들어줄 수 있습니다. 그런데 며칠 뒤 “팀 공유 기능도 추가해줘”라고 요청하면 인증과 권한 시스템이 필요해집니다. 다시 “SaaS처럼 조직별로 사용할 수 있게 해줘”라고 하면 멀티테넌시 구조가 필요해지고, “온프레미스 설치 옵션도 필요해”라고 하면 환경 설정과 배포 구조까지 다시 설계해야 합니다. 이 과정에서 처음 만든 코드는 더 이상 버티기 어려워집니다. 기능을 하나씩 덧붙일수록 반복 수정과 리팩터링이 늘어나고, 코드 일관성은 떨어지며, 예상하지 못한 오류가 생깁니다. 심하면 지금까지 만든 코드를 밀어내고 처음부터 다시 작성해야 할 수도 있습니다. 문제는 AI가 TODO 앱을 못 만들어서가 아닙니다. 처음에 우리가 “어떤 TODO 앱을 만들 것인지” 정의하지 않았기 때문입니다. AI는 “어떻게 구현할지”에는 강합니다. 하지만 “무엇을 만들어야 하는지”, “어떤 구조가 이 제품에 맞는지”, “지금 만들지 않아야 할 것은 무엇인지”는 개발자가 먼저 정해야 합니다. 설계는 거창한 문서를 만드는 일이 아닙니다. 요구사항을 정리하고, 필요한 기능과 필요하지 않은 기능을 구분하고, 데이터와 API의 흐름을 미리 결정하는 일입니다. AI가 빠르게 코드를 만드는 시대일수록 설계는 더 중요해집니다. 생성 속도가 빨라졌다는 것은 잘못된 방향으로도 더 빨리 달려갈 수 있다는 뜻이기 때문입니다. 그래서 “일단 만들어줘” 다음에 필요한 것은 더 많은 프롬프트가 아니라, AI가 따라갈 수 있는 명확한 기준입니다. AI가 만든 코드는 왜 테스트로 검증해야 할까? 설계를 통해 AI가 나아갈 방향을 정했다면, 다음으로 필요한 것은 그 결과를 확인하는 기준입니다. AI가 코드를 빠르게 만들어준다고 해서, 그 코드가 항상 같은 방식으로 만들어지는 것은 아니기 때문입니다. 전통적인 프로그래밍은 비교적 결정적입니다. 같은 소스 코드를 컴파일하면 같은 결과가 나오고, 같은 입력을 넣으면 같은 로직을 따라 같은 출력이 나옵니다. 하지만 AI 코딩 도구는 다릅니다. 같은 요청을 하더라도 매번 조금씩 다른 구현을 제안할 수 있습니다. “사용자 입력을 검증하는 함수를 만들어줘”라고 요청했을 때, 어떤 때는 정규식을 사용하고, 어떤 때는 조건문을 나열하고, 또 어떤 때는 외부 라이브러리를 가져올 수 있습니다. 모두 그럴듯해 보일 수 있지만, 구현 방식과 세부 동작은 달라질 수 있습니다. 문제는 여기서 끝나지 않습니다. 기존 코드의 일부만 수정해달라고 했는데 관련 없는 파일이나 로직까지 함께 바꾸는 경우도 있습니다. 빌드와 테스트가 성공했다고 말하지만, 실제로 확인해보면 그렇지 않은 경우도 있습니다. 즉, AI의 답변은 그럴듯할 수는 있지만 그것만으로 충분한 검증이 되지는 않습니다. 이때 필요한 것이 테스트입니다. 테스트는 AI의 비결정성에 대응하는 결정적인 기준이 됩니다. AI가 어떤 방식으로 코드를 구현했는지는 중요하지 않습니다. 중요한 것은 그 코드가 우리가 기대한 동작을 만족하느냐입니다. 테스트를 통과하면 최소한 정의한 요구사항은 충족한 것이고, 통과하지 못하면 아직 요구사항을 만족하지 못한 것입니다. 특히 AI 코딩 환경에서 TDD, 즉 테스트 주도 개발은 더 중요해집니다. TDD에서는 구현보다 테스트를 먼저 작성합니다. 이는 단순히 버그를 줄이기 위한 절차가 아닙니다. “이 기능은 이렇게 동작해야 한다”라는 요구사항을 실행 가능한 코드로 고정하는 과정입니다. 다시 말해 테스트는 코드의 품질을 확인하는 도구이면서, 동시에 AI가 따라야 할 명세가 됩니다. 예를 들어 TODO 앱에서 “새로운 할 일을 추가하면 목록에 나타나야 한다”, “완료된 할 일의 개수를 정확히 계산해야 한다”와 같은 테스트를 먼저 작성해두면, AI는 그 테스트를 통과하는 방향으로 코드를 구현해야 합니다. 이때 개발자는 구현 세부 사항을 모두 직접 작성하지 않더라도, 원하는 동작의 기준은 분명히 정할 수 있습니다. 반대로 테스트 없이 AI에게 “TODO 기능 만들어줘”라고 요청하면 AI가 기능의 범위와 동작 방식을 스스로 해석하게 됩니다. 처음에는 그럴듯해 보일 수 있지만, 나중에 요구사항과 어긋난 부분을 발견하면 어디서부터 잘못됐는지 추적하기 어려워집니다. 결국 테스트는 AI를 믿기 위한 장치라기보다, AI가 만든 결과를 확인하기 위한 객관적인 검문소입니다. AI가 빠르게 코드를 만들수록 개발자는 더 빠르게 확인할 수 있는 기준을 준비해야 합니다. 그 기준이 없으면 우리는 AI가 만든 코드를 “좋아 보인다”는 감각으로 판단하게 됩니다. 하지만 운영 가능한 소프트웨어에는 감각이 아니라 검증이 필요합니다. AI에게도 TDD 순서를 알려줘야 한다 테스트가 중요하다는 사실을 안다고 해서 AI가 자동으로 TDD 방식에 맞춰 개발해주는 것은 아닙니다. 오히려 AI 코딩 도구는 사용자의 요청을 빠르게 완성하려는 방향으로 움직이기 때문에, 테스트 주도 개발의 순서를 건너뛰는 경우가 많습니다. 예를 들어 “로그인 기능을 TDD로 만들어줘”라고 요청해도 AI는 테스트와 구현을 한 번에 작성하려 할 수 있습니다. 더 심하면 구현 코드를 먼저 만든 뒤, 그 코드에 맞춰 테스트를 끼워 넣기도 합니다. 겉으로 보기에는 테스트가 있는 코드처럼 보이지만, 이런 방식의 테스트는 요구사항을 검증하는 기준이라기보다 이미 작성된 구현을 정당화하는 문서에 가까워집니다. TDD의 핵심은 순서에 있습니다. 먼저 실패하는 테스트를 작성하고, 그 테스트를 통과시키는 최소한의 구현을 만든 뒤, 테스트가 통과하는 상태를 유지하면서 코드를 정리해야 합니다. 이 흐름을 흔히 Red → Green → Refactor라고 부릅니다. 실패하는 테스트를 통해 요구사항을 먼저 고정하고, 그다음 구현이 그 기준을 만족하는지 확인하는 방식입니다. AI와 함께 TDD를 할 때는 이 순서를 더 명확하게 지시해야 합니다. “기능을 구현하고 테스트도 작성해줘”가 아니라, 단계별로 요청을 나눠야 합니다. 첫 번째 단계에서는 구현을 금지하고 테스트만 작성하게 합니다.“아직 구현하지 마. 먼저 테스트만 작성해줘.” 두 번째 단계에서는 테스트를 통과시키는 최소한의 코드만 요청합니다.“방금 작성한 테스트를 통과시키는 최소한의 구현만 해줘.” 세 번째 단계에서는 테스트가 통과하는 상태를 유지한 채 리팩터링을 요청합니다.“테스트가 통과하는 상태를 유지하면서 중복을 제거하고 코드를 정리해줘.” 이렇게 요청을 나누면 AI가 한 번에 모든 것을 해결하려고 하면서 생기는 문제를 줄일 수 있습니다. 테스트와 구현이 뒤섞이지 않고, 각 단계에서 무엇을 검증해야 하는지도 분명해집니다. 실패하는 테스트가 먼저 존재하기 때문에 AI는 그 테스트를 통과해야 하는 방향으로 구현을 조정하게 됩니다. 주의할 점도 있습니다. AI가 테스트를 통과시키기 위해 테스트 자체를 느슨하게 바꾸거나, 실패하는 테스트를 건너뛰기 위해 skip 처리할 수 있습니다. 그래서 “테스트를 수정하지 말고 구현 코드만 수정해”, “실패한 테스트를 삭제하거나 건너뛰지 마”, “모든 테스트가 통과한 로그를 보여줘”처럼 금지 조건도 함께 명시하는 것이 좋습니다. AI와 TDD를 함께할 때 중요한 것은 AI에게 “알아서 TDD로 해줘”라고 맡기는 것이 아닙니다. 테스트 작성, 최소 구현, 리팩터링이라는 단계를 개발자가 나누고, 각 단계의 완료 조건을 명확히 제시해야 합니다. 그래야 테스트는 형식적인 산출물이 아니라 AI가 따라야 할 실제 기준이 됩니다. 명세는 AI에게 “무엇을 만들지” 알려주는 기준이다 TDD가 AI가 만든 코드의 동작을 검증하는 장치라면, SDD는 AI가 무엇을 만들어야 하는지 알려주는 기준입니다. 테스트가 “제대로 만들었는가”를 확인한다면, 명세는 그보다 앞서 “무엇을 만들어야 하는가”를 정의합니다. SDD는 Specification-Driven Development, 즉 명세 주도 개발을 뜻합니다. 코드를 먼저 작성한 뒤 나중에 문서를 맞추는 방식이 아니라, 코드를 작성하기 전에 명세를 먼저 정의하고 그 명세를 기준으로 개발을 진행하는 방식입니다. 여기서 명세는 단순한 참고 문서가 아닙니다. 개발의 출발점이자, 구현 과정에서 계속 돌아와 확인해야 하는 기준점입니다. AI 코딩 환경에서 명세가 중요한 이유는 분명합니다. AI는 모호한 요청에도 그럴듯한 답을 내놓습니다. “TODO 앱 만들어줘”라고 요청하면 AI는 나름의 판단으로 화면을 만들고, 데이터 구조를 정하고, API를 설계합니다. 하지만 그 판단이 우리가 원하는 제품의 방향과 일치한다는 보장은 없습니다. 개인용 앱인지, 팀 협업 도구인지, SaaS 서비스인지에 따라 필요한 구조는 달라지지만, 명세가 없다면 AI는 그 차이를 알 수 없습니다. 명세는 이런 모호함을 줄이는 역할을 합니다. 어떤 사용자를 위한 기능인지, 어떤 데이터를 다뤄야 하는지, 어떤 API가 필요한지, 어떤 예외 상황을 처리해야 하는지, 이번 범위에서 제외할 것은 무엇인지 미리 정리해두면 AI가 임의로 해석할 여지가 줄어듭니다. 다시 말해 명세는 AI와 개발자 사이의 공통 언어가 됩니다. 물론 SDD라고 해서 수십 페이지짜리 문서를 먼저 만들어야 한다는 뜻은 아닙니다. 중요한 것은 AI가 구현을 시작하기 전에 판단 기준을 충분히 제공하는 것입니다. 기능 요구사항, 비기능 요구사항, 데이터 모델, API 명세, 완료 조건처럼 개발에 직접 영향을 주는 정보가 명확히 정리되어 있으면 됩니다. 예를 들어 “할 일 관리 기능을 만들어줘”라고 요청하는 대신, 다음처럼 명세를 먼저 정의할 수 있습니다. “사용자는 할 일을 생성, 수정, 삭제할 수 있어야 한다. 할 일은 제목, 설명, 상태, 담당자, 마감일을 가진다. 상태는 TODO, IN_PROGRESS, DONE 중 하나다. 팀 단위로 데이터를 분리해야 하며, 삭제된 할 일은 복구할 수 있어야 한다. 이번 버전에서는 결제 기능과 알림 기능은 구현하지 않는다.” 이렇게 명세를 먼저 정리하면 AI의 역할도 분명해집니다. AI는 무엇을 만들지 추측하는 대신, 주어진 명세를 어떻게 구현할지에 집중할 수 있습니다. 개발자는 구현의 모든 세부를 직접 작성하지 않더라도, 제품의 방향과 범위는 명확히 통제할 수 있습니다. 결국 SDD는 AI에게 더 많은 일을 맡기기 위한 방식이 아니라, AI가 엉뚱한 일을 하지 않도록 기준을 세우는 방식입니다. “일단 만들어줘”에서 벗어나려면 먼저 “무엇을 만들 것인지”를 정의해야 합니다. 그리고 그 정의가 바로 명세입니다. 명세가 방향을 잡고, 테스트가 품질을 지킨다 명세와 테스트는 서로 다른 역할을 합니다. 명세는 “무엇을 만들 것인가”를 정의하고, 테스트는 “제대로 만들었는가”를 확인합니다. SDD가 개발의 방향을 잡는다면, TDD는 그 방향대로 구현되었는지 검증하는 안전장치입니다. 이 둘을 따로 생각하면 효과가 반쪽에 그칠 수 있습니다. 명세만 있고 테스트가 없다면, 구현이 명세를 제대로 만족하는지 확인하기 어렵습니다. 반대로 테스트만 있고 명세가 없다면, 테스트가 어떤 제품 방향과 요구사항을 기준으로 만들어졌는지 불분명해질 수 있습니다. 그래서 AI 코딩 환경에서는 SDD와 TDD를 함께 사용하는 것이 중요합니다. 흐름은 단순합니다. 먼저 명세를 작성합니다. 어떤 기능을 만들지, 어떤 데이터가 필요한지, 어떤 API가 있어야 하는지, 성공 조건과 실패 조건은 무엇인지 정리합니다. 그다음 명세에서 테스트 케이스를 도출합니다. 사용자가 할 일을 등록할 수 있어야 한다면, “할 일을 생성하면 목록에 나타난다”는 테스트가 필요합니다. 상태를 변경할 수 있어야 한다면, “TODO 상태의 항목을 IN_PROGRESS나 DONE으로 변경할 수 있다”는 테스트가 필요합니다. 이렇게 테스트가 준비되면 AI에게 구현을 요청합니다. 이때 중요한 것은 “전체 기능을 알아서 만들어줘”가 아니라, “이 명세와 테스트를 기준으로 최소 구현을 해줘”라고 요청하는 것입니다. 그러면 AI는 기능을 임의로 확장하기보다, 명세와 테스트를 만족하는 방향으로 코드를 작성하게 됩니다. 구현이 끝난 뒤에는 테스트를 실행합니다. 테스트가 실패하면 AI에게 원인을 분석하게 하고, 실패한 테스트를 통과하도록 수정하게 합니다. 테스트가 통과하면 리팩터링을 진행하되, 이때도 테스트가 계속 통과하는지 확인해야 합니다. 마지막으로 구현 결과가 처음 작성한 명세와 어긋나지 않는지 다시 검토합니다. 정리하면 AI와 함께 개발할 때의 흐름은 다음과 같습니다. 명세를 확인한다.명세에서 테스트를 작성한다.테스트를 통과하는 최소 구현을 요청한다.테스트가 통과하는 상태에서 리팩터링한다.구현 결과가 명세와 일치하는지 검증한다. 이 흐름에서 명세는 AI가 따라갈 지도이고, 테스트는 목적지에 제대로 도착했는지 확인하는 검문소입니다. AI는 빠르게 코드를 만들 수 있지만, 어디로 가야 하는지와 제대로 도착했는지는 개발자가 정해야 합니다. 그래서 “일단 만들어줘” 방식에서 벗어나려면 순서를 바꿔야 합니다. 먼저 명세로 방향을 정하고, 테스트로 기준을 세운 다음, AI에게 구현을 맡겨야 합니다. AI가 코드를 빠르게 만드는 시대일수록 개발자는 더 명확하게 명세를 쓰고 더 철저하게 테스트해야 합니다. 그것이 AI 코딩을 빠른 데모가 아니라 운영 가능한 개발 방식으로 바꾸는 출발점입니다.위 콘텐츠는 『클로드 코드 마스터』내용을 토대로 재구성하였습니다.

첫 킥오프 미팅부터 번아웃 관리까지: 신입 백엔드 개발자의 첫 1년 생존 가이드

첫 킥오프 미팅부터 번아웃 관리까지: 신입 백엔드 개발자의 첫 1년 생존 가이드

▶ 이전글: 코드가 동작한다고 끝이 아닙니다 | 실무에서 원하는 '신입 백엔드 개발자'의 핵심 역량 7가지 대부분의 신입 개발자는 입사 직후 기술은 알지만 실무는 낯설다는 느낌을 받을 것입니다. 코드를 짜는 능력과 실제 서비스를 살아 움직이게 만드는 능력 사이에는 생각보다 큰 간격이 있습니다. 이 글은 MVP 설계부터 새벽 장애 대응, 그리고 오래 달리는 개발자가 되기 위한 소프트 스킬까지, 신입 백엔드 개발자가 실무에서 직접 마주하는 과정을 순서대로 짚습니다. • 실무는 시나리오로 배운다: MVP부터 코드 리뷰까지 첫 출근 날, 팀장이 "마침 이번 분기에 설문 서비스를 새로 만들어야 해요. 이 프로젝트로 OJT를 진행하죠"라고 말한다면 어떻게 대처해야 할까요. 킥오프 미팅에서 기획자가 "일단 빠르게 MVP부터 만들죠"라는 말을 꺼내는 순간, 이론으로만 알던 개념들이 실전이 됩니다. MVP(Minimum Viable Product)는 완성도 높은 서비스를 바로 내놓는 것이 아니라, 핵심 가설을 검증할 수 있는 최소한의 기능만 빠르게 만드는 전략입니다. 자원과 시간이 한정된 환경에서 모든 기능을 다 담으려 하면 그 사이 시장은 변하고 사용자가 원하는 바도 달라집니다. MVP는 단순히 '적당히 만드는 제품'이 아닙니다. 이해관계자들이 공통으로 인정할 수 있는 최소 기능의 합의점을 실체화한 제품입니다. 요구사항 정리는 "무엇을 제공할 것인가"와 "어떤 품질로 제공할 것인가"를 함께 정하는 과정입니다. 기능적 요구사항이 "설문을 만들고 링크로 공유할 수 있어야 한다"처럼 시스템이 제공해야 할 행동을 정의한다면, 비기능적 요구사항은 "응답자는 설문 제출 버튼을 누른 뒤 2초 이내에 완료 화면을 봐야 한다"처럼 성능·안정성·보안 같은 품질 속성을 규정합니다. MVP라 해도 결국은 실제 고객 앞에 내놓는 제품입니다. 첫인상에서 신뢰를 잃으면 시장 검증 자체가 불가능해지므로 기본적인 안정성과 보안은 반드시 갖춰야 합니다. 요구사항이 정리되면 그다음은 코드를 짜기 전에 반드시 거쳐야 하는 과정, 도메인 분석입니다. 기획자는 '설문'을 화면에 보이는 질문지 전체로 이해하고, 데이터베이스 담당자는 테이블 단위로 생각하며, 마케터는 고객 참여 이벤트로 부르기도 합니다. 이렇게 제각각 이해하는 용어를 그대로 코드에 반영하면 나중에 큰 혼란이 옵니다. 도메인 분석은 이런 용어를 공통 언어로 맞추는 작업입니다. "Survey는 Question과 Response로 구성된다"는 정의를 팀 전체가 공유하는 것이죠. 이 공통 언어를 코드로 옮길 때 주니어 개발자가 자주 저지르는 실수가 있습니다. 데이터베이스 엔터티와 도메인 모델을 동일시하는 것입니다. 도메인 모델은 비즈니스 규칙과 행위를 표현하는 코드이고, 엔터티는 데이터베이스에 저장되는 구조입니다. 비즈니스 로직이 DB 구현에 의존해서는 안 됩니다. 처음에는 번거롭게 느껴지지만, 서비스가 커지면 DB 테이블 변경 때문에 비즈니스 로직 전체를 고쳐야 하는 상황이 반드시 옵니다. 그것도 생각보다 빨리요. 이렇게 도메인 구조를 잡고 코드를 작성하고 나면 코드 리뷰가 기다립니다. 이 단계에서 가장 자주 지적받는 문제 중 하나가 싱크홀 안티패턴입니다. 서비스 계층이 아무런 도메인 로직도 갖지 않고 단순히 컨트롤러와 리포지터리 사이를 중계만 하는 구조를 말합니다. 이렇게 되면 계층만 늘어나고 코드 구조만 복잡해질 뿐, 서비스 레이어가 존재할 이유가 없어집니다. 서비스 레이어는 트랜잭션 관리, 도메인 규칙 적용, 여러 리포지터리 간 조합 로직을 담당해야 합니다. 코드는 완성된 뒤가 진짜 시작이며, 유지보수하기 좋게 짜는 것이 핵심입니다. 새로운 아이디어는 MVP부터! • 운영이 진짜 시작이다: 로그, 모니터링, 배포 "로그엔 아무것도 안 찍혀 있어요." 서비스 운영 중 가장 무서운 말 중 하나입니다. 로그는 "무엇이 일어났는가"를 알려주는 기록이고, 모니터링은 "지금 무슨 일이 일어나고 있는가"를 보여주는 창입니다. 이 둘을 어떻게 설계하고 활용하느냐가 장애 대응 속도를 결정합니다. 새벽 3시 장애 알람 모니터링의 기준점으로 USE 방법론과 RED 방법론이 자주 쓰입니다. USE는 인프라 중심으로 활용률(Utilization), 포화도(Saturation), 오류율(Errors)을 관찰합니다. RED는 서비스 관점에서 요청률(Rate), 오류율(Errors), 응답 시간(Duration)을 추적합니다. USE는 서버와 인프라의 상태를, RED는 사용자가 체감하는 서비스 품질을 대변합니다. 두 방법론은 선택의 문제가 아니라 상호 보완적인 지표입니다. 새벽 3시에 알람이 울렸을 때 당황하지 않으려면 평소에 구조가 갖춰져 있어야 합니다. 알람 피로는 운영에서 쉽게 빠지는 함정입니다. 모든 지표에 임계치를 걸면 알람이 너무 많아져 아무도 그 경보를 신뢰하지 않게 되고, 결국 진짜 장애 신호가 묻혀버립니다. 좋은 알람 시스템은 '반드시 봐야 할 이유가 있는 상황'에서만 경보를 울려야 합니다. 단일 이벤트보다 추세를 감지하고, 주의와 위험 수준을 구분해 설정하는 것이 핵심입니다. 배포도 마찬가지입니다. 코드가 고객에게 닿기까지는 수많은 단계와 검증 절차를 거칩니다. CI(지속적 통합)는 여러 개발자가 작성한 코드를 하나의 저장소로 자주 통합하고 자동 빌드와 테스트를 통해 충돌과 오류를 빠르게 찾아내는 과정입니다. CD(지속적 배포)는 품질 검사를 통과한 코드가 자동으로 운영 환경까지 흘러가도록 파이프라인을 구성합니다. 배포 전략으로는 일부 서버를 차례대로 교체하는 롤링 배포, 블루와 그린 두 환경을 완전히 분리해 트래픽만 스위칭하는 블루/그린 배포, 실제 사용자 중 일부에게만 새 버전을 먼저 배포하며 반응을 관찰하는 카나리 배포가 대표적입니다. 현업에서는 '실패를 막는 일'보다 '실패했을 때 되돌리는 능력'을 더 중요하게 여깁니다. 배포 후 오류율이 임계치를 넘으면 자동으로 이전 버전으로 되돌아가는 롤백 구조, 그리고 각 배포 버전을 명확히 기록하는 이미지 버저닝이 이 능력의 핵심입니다. 서비스는 완성된 공산품이 아니라 매일 돌봐야 하는 생명체입니다. 배포와 운영에서의 배움! • 오래 달리는 개발자가 되려면: 소프트 스킬과 성장 엔진 "코드보다 사람이 더 어렵다"는 말이 있습니다. 개발은 결국 여러 직군이 모여 제품을 만드는 팀 스포츠입니다. 아무리 뛰어난 기술을 가졌어도 동료와 소통하지 못하면 위대한 제품을 만들 수 없습니다. 기술 부채를 논의할 때 주니어 개발자들이 흔히 빠지는 실수는 감정적인 표현을 쓰는 것입니다. "이 코드는 너무 더러워요. 리팩터링해야 합니다"보다 “현재 할인 정책이 코드에 하드코딩되어 있어서, 새로운 할인 쿠폰을 추가할 때마다 코드를 수정하고 재배포해야 합니다. 앞으로 기획이 변경될 때마다 개발 시간이 오래 걸릴 것 같아요.”처럼 현상과 비즈니스 영향을 구체적으로 설명해야 합니다. 개선 방안과 기대 효과를 함께 제안하면 동료들도 훨씬 긍정적으로 귀 기울입니다. 질문하는 방법도 마찬가지입니다. "결제 연동이 안 돼요. 좀 봐주세요"는 맥락 없는 나쁜 질문입니다. 좋은 질문은 세 가지 요소를 포함합니다. 내가 하려는 것(목표), 시도해 본 것(과정), 예상 결과와 실제 결과의 차이입니다. 충분한 맥락을 담아 질문하면 동료는 문제를 정확히 파악하고 핵심적인 조언을 줄 수 있습니다. 팀의 관점에서 보면 주니어 한 명이 몇 시간 동안 삽질하는 것보다, 시니어가 5분 만에 방향을 알려주는 것이 압도적으로 효율적입니다. 팀 안에서 잘 소통하는 것만큼 중요한 것이 혼자서도 꾸준히 성장하는 능력입니다. 기술적 성장을 이어가려면 자기 주도 성장 엔진이 필요합니다. 세 가지 기어가 이 엔진을 구성합니다. 첫째, 기술 블로그입니다. 어떤 개념을 다른 사람이 이해할 수 있도록 글로 구조화하는 과정은 내가 무엇을 알고 무엇을 모르는지 스스로 점검하게 만드는 메타인지 활동입니다. AI가 코드 조각이나 튜토리얼 수준의 글을 쉽게 생성할 수 있는 시대에, 직접 삽질하며 얻은 경험과 왜 이런 결정을 내렸는가를 담은 글이 훨씬 더 큰 가치를 가집니다. 둘째, 효과적인 학습 전략입니다. '쿠버네티스 공부하기'보다 '내 사이드 프로젝트를 쿠버네티스로 배포해 보기'가 더 강력한 학습이 됩니다. 셋째, 사이드 프로젝트입니다. 무엇을 만드는가보다 무엇을 배우고 경험할지에 초점을 맞추고, 핵심 기능만 담은 MVP부터 배포하는 것을 목표로 삼아야 합니다. 이 모든 것을 지속하려면 한 가지 전제가 필요합니다. 스스로가 소진되지 않아야 한다는 것입니다. 번아웃은 의지나 열정의 문제가 아닙니다. 장기간의 스트레스로 인한 에너지 고갈 상태입니다. 특히 기술 변화의 속도를 따라가지 못하면 뒤처질 것이라는 불안감, 보이지 않는 노동에서 오는 효능감 저하, 자신의 실력이 부족하며 언젠가 들통날 것이라는 가면 증후군이 개발자에게 번아웃을 불러오는 주요 원인입니다. SNS에서 보이는 것들은 다른 사람의 가장 빛나는 순간입니다. 그 뒤에 숨겨진 수많은 실패와 좌절은 거의 보이지 않죠. 개발자의 커리어는 단거리 경주가 아니라 끝이 없는 마라톤입니다. 마라톤을 완주하려면 나만의 페이스를 찾아 꾸준하게 달리는 것이 가장 중요합니다. 입사 첫날부터 새벽 장애 대응까지, 신입 개발자의 실무 적응 과정은 어떤 기술 문서에도 담기 어려운 살아있는 경험입니다. 기술이 빠르게 변하는 환경에서도 변하지 않는 것은 문제를 구조화하는 능력, 동료와 함께 해결하려는 태도, 그리고 스스로를 오래 지속시키는 자기 관리입니다. 이 세 가지가 단단한 개발자의 기반이 됩니다. 위 컨텐츠는 이준형, 김석현 저자의『백엔드 개발자 온보딩 가이드』의 내용을 재구성하여 제작되었습니다.

하루 종일 바빴는데 남는 게 없다면, 자동화가 필요한 때: n8n과 3T 프레임워크

하루 종일 바빴는데 남는 게 없다면, 자동화가 필요한 때: n8n과 3T 프레임워크

하루 종일 일했는데 정작 남는 게 없다는 느낌, 한 번쯤 받아본 적 있죠. 엑셀을 열어 수식과 싸우고, 메일 문장을 다듬고, 보고서 형식을 고치는 일들이 반복됩니다. 이 반복에서 벗어나는 방법, n8n과 3T 프레임워크를 이야기하려고 합니다. • 우리의 하루에는 '가짜 노동'이 너무 많습니다 자동화를 이야기하기 전에, 먼저 한 가지 질문을 던져야 합니다. “왜 자동화가 필요한가?” 우리의 하루는 생각보다 많은 '가짜 노동'으로 채워져 있습니다. 옮기기, 정리하기, 공유하기, 확인하기. 꼭 필요하지만 사람이 매번 직접 하지 않아도 되는 일들입니다. 문제는 그 반복이 우리의 집중력을 조금씩 갉아먹고, 삶의 시간을 조용히 빼앗아 간다는 데 있습니다. 그렇게 하루가 지나고, 한 주가 지나고, 어느 순간 "왜 이렇게 바쁜데 남는 게 없지?"라는 질문 앞에 서게 됩니다. 자동화는 단순한 '편리함'을 넘어, 인간이 더 가치 있는 고민과 의사결정에 집중할 수 있도록 '시간의 자유'를 되찾아주는 도구입니다. 자동화를 도입한다고 해서 일이 사라지는 것은 아닙니다. 대신 일이 달라집니다. 반복하던 사람이 설계하는 사람이 되고, 처리하던 사람이 판단하는 사람이 됩니다. • n8n: 업무 흐름을 눈에 보이게 만드는 도구 그렇다면 어떤 도구로 자동화를 시작해야 할까요. 과거에는 파이썬이나 자바 같은 프로그래밍 언어를 배워야 했습니다. 하지만 이제는 마우스 클릭과 드래그 앤 드롭만으로도 자동화 프로그램을 만들 수 있는 시대입니다. 이것이 노코드(No-Code) 자동화 도구의 핵심이고, 그 중심에 n8n이 있습니다. n8n 실행 화면, 노드를 연결하여 워크플로우를 완성 n8n이 주목받는 이유는 크게 세 가지입니다. ✓첫째, 셀프 호스팅(self-hosted) 방식으로 내 컴퓨터나 서버에 직접 설치하면 실행 횟수 제한 없이 무료로 사용할 수 있습니다. 기존 자동화 서비스가 실행량에 비례해 비용이 늘어나는 구조인 것과 대비됩니다. ✓둘째, 모든 데이터가 내 서버 안에서 처리되기 때문에 고객 정보나 매출 데이터 같은 민감한 정보도 외부로 유출될 걱정이 없습니다. ✓셋째, 챗GPT, 클로드 같은 최신 AI와의 연동이 매우 쉬워 단순 반복 업무뿐만 아니라 판단이나 글쓰기까지 자동화할 수 있습니다. 자동화의 핵심은 업무를 구조적으로 바라보는 눈입니다. 내 일을 단계별로 나누어 설명할 수 있다면, 누구나 코드 없이 자동화를 시작할 수 있습니다. n8n에서 그 흐름은 노드(node)와 연결(connection)로 구성됩니다. 노드는 하나의 기능을 가진 레고 블록이고, 연결은 블록들을 이어서 하나의 자동화 흐름으로 만드는 길입니다. • 모든 자동화는 세 가지 질문으로 정리됩니다: 3T 프레임워크 n8n을 처음 열면 막막한 느낌이 드는 게 정상입니다. "무엇부터 만들어야 하지?" 하는 질문이 가장 먼저 따라옵니다. 하지만 모든 자동화는 세 가지 질문으로 정리할 수 있습니다. ◦ 언제 실행할 것인가, 무엇을 할 것인가, 어디로 보낼 것인가 이 세 가지가 바로 3T 프레임워크입니다. 언제(Trigger), 무엇을(Task), 어디로(Target) 아무리 복잡해 보이는 워크플로우도 3T 구조를 잡으면 명확해집니다. Trigger는 자동화의 시작 신호입니다. "이 워크플로우를 언제 실행할 것인가?"를 결정합니다. 매일 오전 9시에 자동으로 실행하거나, 파일이 업로드되는 순간 실행하거나, 채팅 메시지가 도착했을 때 실행하는 방식이 트리거의 예시입니다. Task는 트리거가 발동된 이후 실제로 수행하는 작업입니다. 데이터를 수집하고, 필요한 정보만 골라내고, AI로 요약하는 등 모든 처리 과정이 이 단계에 해당합니다. Target은 자동화 결과가 도착하는 목적지입니다. Gmail로 뉴스레터를 발송하거나, 디스코드로 알림을 보내거나, 노션 데이터베이스에 저장하는 방식입니다. 3T 프레임워크의 예시 • 주식 뉴스 수집봇으로 보는 3T 프레임워크의 흐름 말로만 들으면 어려우니, 주식 뉴스 자동 수집봇 예제로 살펴보려 합니다. 이 워크플로우의 목적은 단순합니다. 매일 아침, 여러 주식 뉴스를 직접 찾아보지 않아도 AI가 핵심만 요약해 이메일로 보내 주는 것입니다. 3T 프레임워크로 이 워크플로우를 설계하면 다음과 같습니다. ◦[Trigger] 언제?: 매일 오전 6시 Schedule Trigger 노드를 설정해 두면, 매일 정해진 시각에 워크플로우가 자동으로 시작됩니다. Schedule Trigger 노드 ◦[Task] 무엇을?: 뉴스 수집/정리/묶기 RSS Read 노드로 구글 뉴스에서 '주식' 키워드의 최신 기사를 가져옵니다. RSS 피드는 뉴스, 블로그, 공지사항처럼 정기적으로 업데이트되는 정보를 자동으로 수집할 때 매우 유용한 형식입니다. 수집된 기사 중 최근 몇 개만 남기도록 Limit 노드로 개수를 제한하고, Edit Fields 노드로 제목·링크처럼 필요한 정보만 선별합니다. 마지막으로 Aggregate 노드가 흩어진 뉴스 항목을 하나의 덩어리로 합칩니다. RSS Read 노드 Limit 노드 / Edit Fields 노드 / Aggregate 노드 ◦[Target] 어디로?: Gmail로 발송 정리된 뉴스 요약본을 이메일로 발송합니다. '2026-05-27 주식 뉴스레터'처럼 날짜를 포함한 제목을 자동으로 설정해 두면, 나중에 메일을 찾아보기도 쉽습니다. Send a message 노드 주식 뉴스 수집봇 작동 결과 코드 한 줄 없이, Trigger, Task, Target 세 단계를 연결하는 것만으로 매일 아침 주식 뉴스레터가 자동으로 도착하는 주식 뉴스 수집봇이 완성됩니다. 주식 뉴스봇은 시작일 뿐입니다. 키워드를 바꾸면 원하는 분야의 뉴스를, 발송 채널을 슬랙이나 노션으로 바꾸면 팀 단위 자동화로도 확장할 수 있습니다. 반복되는 업무 하나를 자동화하는 경험이 쌓이면, 일하는 방식 자체가 달라집니다.위 컨텐츠는 이인영, 임정 저자의『n8n이 다 해줌』의 내용을 재구성하여 제작되었습니다.

코드가 동작한다고 끝이 아닙니다 | 실무에서 원하는 '신입 백엔드 개발자'의 핵심 역량 7가지

코드가 동작한다고 끝이 아닙니다 | 실무에서 원하는 '신입 백엔드 개발자'의 핵심 역량 7가지

▶ 이전글: 신입 백엔드 개발자, 첫 회사에서 살아남는 법 | 백엔드 개발자의 직무 이해와 취업 준비 전략 4단계 학교나 개인 프로젝트에서 짠 코드와 실무에서 요구되는 코드 사이에는 꽤 큰 간격이 있습니다. 기능이 돌아가는 코드와 오래 살아남는 코드는 다릅니다. 이 글은 백엔드 개발자가 현업에서 실제로 인정받기 위해 갖춰야 할 핵심 역량 일곱 가지를 정리합니다. 객체지향 설계부터 시스템 복원력까지, 신입 개발자가 가장 먼저 마주치는 개념들을 순서대로 짚어보겠습니다. • 변화에 강한 코드를 만드는 원칙: 객체지향과 SOLID 실무에서 백엔드 코드는 한 번 만들어지고 끝나지 않습니다. 요구사항은 언제든 바뀌고, 팀원이 교체되고, 기술 스택도 진화합니다. 그래서 백엔드 개발자의 진짜 실력은 당장 동작하게 짜는 능력이 아니라, 처음부터 유지보수하기 쉬운 코드를 작성하는 능력에 달려 있습니다. 이를 위한 첫걸음은 "이 코드는 내가 아니라 다음 사람이 고친다"라는 관점을 갖는 것입니다. ‘이 코드는 내가 아니라 다음 사람이 고친다’는 관점 갖기 객체지향의 핵심 설계 원칙인 SOLID는 이 관점을 코드 구조로 실현하는 도구입니다. ①단일 책임 원칙(SRP)은 하나의 클래스는 하나의 책임만 가져야 한다고 말합니다. 책임이 많은 클래스는 A 기능을 수정했을 뿐인데 B, C 기능까지 깨지는 문제를 만들어냅니다. ②개방-폐쇄 원칙(OCP)은 확장에는 열려 있고 변경에는 닫혀 있어야 한다는 원칙으로, 새로운 결제 수단이 추가될 때마다 기존 코드의 if-else 블록을 손대는 대신, 인터페이스를 새로 구현하는 방식으로 대응하는 구조가 그 예입니다. ③리스코프 치환 원칙(LSP)은 자식 클래스가 부모 클래스를 완전히 대체할 수 있어야 한다는 것으로, 상속이 코드 재사용을 넘어 동작의 신뢰까지 보장해야 한다는 뜻입니다. ④인터페이스 분리 원칙(ISP)은 하나의 거대한 인터페이스보다 용도에 맞게 잘게 나눈 인터페이스가 낫다는 철학이며, ⑤의존성 역전 원칙(DIP)은 구체 구현이 아닌 추상에 의존하도록 설계해 확장과 테스트를 쉽게 만드는 원칙입니다. 이 다섯 원칙은 독립적으로 보이지만 모두 같은 방향을 가리킵니다. 변경에 유연하게 대응할 수 있는 코드 구조를 만드는 것입니다. SOLID 원칙 • 예외, 로그, 테스트: 코드 품질과 유지보수의 세 축 SOLID 원칙이 코드 구조의 뼈대를 잡는다면, 그 위에 실제 품질을 결정하는 세 가지 요소가 있습니다. 기능이 동작하는 코드를 넘어 유지보수하기 좋은 코드를 만드는 데는 예외 설계, 로그 활용, 테스트 전략이 중요하게 작동합니다. 첫째, 예외 설계입니다. "배치 작업이 멈췄는데 오류 메시지가 그저 '오류 발생'이에요."라는 상황을 생각해 보세요. 예외를 제대로 설계하지 않으면 문제가 생겼을 때 '왜'와 '어디서'를 알 수 없고, 그걸 고치는 데 시간과 인력이 낭비됩니다. 자바에서 예외는 크게 Checked Exception과 Unchecked Exception으로 나뉩니다. 스프링 기반 애플리케이션에서는 이 차이가 트랜잭션 처리 방식에 직접 영향을 미칩니다. 스프링의 @Transactional은 기본적으로 RuntimeException이 발생했을 때만 롤백하고, Checked Exception은 롤백 없이 커밋합니다. '예외가 발생했으니 당연히 롤백되었을 것'이라는 착각은 신입 개발자가 자주 저지르는 실수입니다. 도메인에 맞는 사용자 정의 예외를 계층 구조로 설계하면 오류 원인을 명확히 전달하고, 재시도 대상 예외와 그렇지 않은 예외를 구분하는 데도 유용합니다. 둘째, 로그 활용입니다. 로그는 장애가 발생했을 때 원인을 찾는 가장 중요한 단서입니다. 로그 레벨을 적절히 활용하고, 어떤 요청에서 발생한 문제인지 추적할 수 있도록 Trace ID 같은 맥락 정보를 함께 남기는 습관이 필요합니다. 개인정보는 반드시 비식별화 처리해야 합니다. 셋째, 테스트 전략입니다. 테스트는 코드의 신뢰도를 높이는 동시에 유지보수를 쉽게 만드는 설계 도구이기도 합니다. 단위 테스트는 빠르고 격리된 환경에서 개별 로직을 검증하며, FIRST 원칙(Fast, Independent, Repeatable, Self-validating, Thorough & Timely)이 좋은 단위 테스트의 기준이 됩니다. 통합 테스트는 여러 구성요소가 유기적으로 맞물려 동작하는지를 확인하고, E2E 테스트는 사용자 관점에서 전체 시나리오가 처음부터 끝까지 제대로 흘러가는지를 검증합니다. 모든 것을 E2E로 검증하려 들면 시스템이 느려지고 유지보수가 어려워지죠. 단위·통합·E2E 테스트 각각의 역할을 명확히 분리하고 전략적으로 구성하는 것이 중요합니다. 테스트하기 어려운 코드는 대부분 설계 자체에 문제가 있다는 신호이기도 합니다. 왼쪽부터 [테스트 피라미드 / 다이아몬드 모델 / 허니콤 모델] • API 설계, 데이터 관리, 장애에 강한 시스템 API 설계는 백엔드 개발자와 외부 세계 사이의 계약입니다. 좋은 API는 일관성 있는 인터페이스, 명확한 오류 메시지, 적절한 HTTP 상태 코드, 그리고 체계적인 버전 관리를 갖춥니다. API는 한 번 공개되면 쉽게 바꾸기 어렵기 때문에, 설계 단계에서 리소스 모델링을 충분히 고민하는 것이 이후 유지보수 비용을 크게 줄여줍니다. 보안 측면에서는 SQL 인젝션, XSS, 잘못된 인가, 재전송 공격 등 OWASP API Security Top 10에서 다루는 위협들을 기본적으로 이해하고 대비해야 합니다. 데이터 관리에서는 관계형 데이터베이스와 NoSQL의 특성 차이를 이해하고 상황에 맞게 선택하는 능력이 필요합니다. 정규화는 데이터 중복을 줄이고 무결성을 높이지만, 실무에서는 성능과 운영 편의를 위해 전략적으로 역정규화를 적용하기도 합니다. 예를 들어 결제가 완료된 주문의 상품 가격은 이후 할인 정책이 바뀌더라도 변경되어서는 안 됩니다. 이 경우 당시의 상품 가격을 주문 상품 테이블에 별도로 저장해 두는 것이 안전하며, 이는 특정 시점의 데이터를 기록하는 역정규화의 대표적 사례입니다. NoSQL은 키-값 저장소, 문서 데이터베이스 등 다양한 모델이 있으며, 유연한 구조와 수평 확장이 필요한 환경에서 강점을 발휘합니다. 장애에 강한 시스템을 만드는 핵심 개념들은 신입 개발자가 가장 낯설어하는 영역이면서도, 실무에서 가장 먼저 체감하는 영역이기도 합니다. "제 컴퓨터에서는 잘 되는데요"라는 말이 통하지 않는 이유가 여기에 있습니다. ✓재시도(Retry)는 네트워크 불안정, 서버 과부하, 일시적 오류처럼 짧은 시간에 해소될 수 있는 장애에 효과적인 전략입니다. 단, 모든 실패에 재시도하는 것은 위험합니다. 고정 간격 재시도, 지수 백오프, 랜덤 지수 백오프 중 상황에 맞는 전략을 선택해야 하며, HTTP 4xx 오류는 대부분 재시도해도 해결되지 않습니다. ✓멱등성(Idempotency)은 재시도와 떼려야 뗄 수 없는 개념입니다. 동일한 요청을 여러 번 수행해도 결과가 변하지 않아야 한다는 성질로, 결제·주문·회원가입처럼 딱 한 번만 일어나야 하는 작업에서 특히 중요합니다. 요청마다 고유 식별자를 부여해 서버가 중복 처리 여부를 판단하도록 설계하는 것이 기본 전략입니다. ✓회로 차단기(Circuit Breaker)는 재시도가 해결할 수 없는 장기적 장애를 조기에 차단하는 안전장치입니다. 하나의 서비스가 장애를 일으키면 이를 호출하던 서비스들도 연쇄적으로 영향받는 분산 시스템의 구조적 특성 때문에 반드시 필요합니다. Closed(정상), Open(차단), Half-Open(탐색)의 세 가지 상태로 동작하며, 장애 서비스에 대한 호출을 차단하고 복구 시간을 확보합니다. 재시도가 단기 장애에 대응한다면, 회로 차단기는 장기 장애를 조기에 격리합니다. 여기에 멱등성 설계까지 결합되면 분산 환경에서도 견고하고 탄력적인 서비스를 구축할 수 있습니다. 회로차단기 장애를 차단하는 것만큼 중요한 것이 서비스 간 데이터 일관성을 지키는 일입니다. ✓아웃박스 패턴(Outbox Pattern)은 분산 시스템에서 데이터베이스와 메시지 큐 간의 동기화 문제를 해결하는 설계 기법입니다. 주문 데이터를 DB에 저장하는 데는 성공했지만 메시지 큐 전송에 실패하면, 결제 서비스나 재고 서비스가 해당 이벤트를 받지 못해 시스템 전체의 데이터 불일치로 이어집니다. 아웃박스 패턴은 핵심 데이터와 이벤트를 동일한 트랜잭션 안에서 함께 DB에 기록하고, 별도 프로세스가 이를 읽어 메시지 큐에 전송하는 방식으로 이 문제를 해결합니다. 아웃박스 패턴 지금까지 소개한 역량들은 특정 기술 스택에 종속되지 않습니다. AI가 코드를 생성해 주더라도, 그 코드가 실제 프로덕션에서 안전하게 동작하는지 판단하고 책임지는 능력은 여전히 개발자의 몫입니다. 기본기가 단단할수록 새로운 환경에서도 빠르게 자리를 잡을 수 있습니다. ▶ 다음글: 첫 킥오프 미팅부터 번아웃 관리까지: 신입 백엔드 개발자의 첫 1년 생존 가이드 위 컨텐츠는 이준형, 김석현 저자의『백엔드 개발자 온보딩 가이드』의 내용을 재구성하여 제작되었습니다.

신입 백엔드 개발자, 첫 회사에서 살아남는 법 | 백엔드 개발자의 직무 이해와 취업 준비 전략 4단계

신입 백엔드 개발자, 첫 회사에서 살아남는 법 | 백엔드 개발자의 직무 이해와 취업 준비 전략 4단계

취업을 준비하는 시간은 길고, 어디서부터 시작해야 할지 막막한 경우가 많습니다. 무엇을 공부해야 하는지, 이력서는 어떻게 써야 하는지, 면접에서는 어떤 질문이 나오는지 말이죠. 이 글에서는 신입 백엔드 개발자가 취업 준비부터 첫 실무 적응까지 거쳐야 하는 과정을 직무 이해, 학습 전략, 채용 프로세스 순서로 정리합니다. • 백엔드 개발자는 실제로 어떤 일을 하는가 백엔드 개발자는 서비스의 심장부를 설계하고 운영하는 사람입니다. 사용자가 직접 보고 경험하는 화면이 프런트엔드라면, 백엔드는 그 뒤에서 데이터를 처리하고 비즈니스 로직을 실행하며 시스템 전체가 안정적으로 동작하도록 만드는 영역입니다. 고객의 눈에는 보이지 않지만, 서비스가 실제로 작동하게 만드는 핵심이 바로 여기에 있습니다. 백엔드 시스템은 혼자 존재할 수 없습니다. 프런트엔드 개발자와는 API라는 명확한 약속을 통해 소통하고, 기획자·디자이너와는 비즈니스 언어로 대화합니다. API라는 약속이 명확하다면 프런트엔드 개발자는 백엔드 완성을 기다리지 않고 가짜 데이터로 화면 개발을 먼저 진행할 수 있고, 백엔드 개발자는 화면 없이도 API가 약속대로 동작하는지 확인하며 개발을 이어갈 수 있습니다. 잘 정의된 API 하나가 팀 전체의 개발 속도를 비약적으로 끌어올리는 이유가 여기에 있습니다. 백엔드 개발자로의 온보딩 여정 좋은 백엔드 개발자는 기술 전문가이면서 동시에 제품을 만드는 주체입니다. 금융 서비스라면 결제와 정산 지식을, 이커머스라면 재고와 물류 지식을 이해하려는 노력이 더 나은 설계로 이어집니다. 기획자가 "사용자 등급 시스템을 만들어주세요"라고 요청했을 때, 등급 산정 기준은 무엇인지, 등급 갱신이 실시간으로 이루어져야 하는지 먼저 질문하고 정리하는 것 역시 백엔드 개발자의 중요한 역할입니다. 이런 역할을 실제로 수행하려면 팀에 먼저 스며드는 과정이 필요합니다. 신입 개발자가 처음 받는 업무는 대부분 작은 기능 추가나 버그 수정입니다. 이 과정에서 가장 중요한 단계가 코드 리뷰입니다. 내가 작성한 코드를 사수나 시니어에게 검토받는 것으로, 미처 생각하지 못한 예외 상황이나 더 효율적인 구현 방식에 대한 피드백은 가장 빠르게 성장할 수 있는 자리가 됩니다. 업무의 상당 부분은 내가 작성하지 않은 레거시 코드를 읽고 이해하는 일이기도 합니다. API 엔드포인트부터 코드 흐름을 따라가거나, 디버거로 변수 값을 직접 확인하거나, 테스트 코드에서 기능의 의도를 파악하는 방법이 이 과정에서 유효하게 작동합니다. 코드를 읽고 짜는 것만큼 중요한 것이 개발 환경 전체를 이해하는 능력입니다. 인프라 측면에서 신입 개발자에게 요구되는 것은 이미 갖춰진 환경을 '사용자'의 입장에서 능숙하게 다루는 능력입니다. Docker로 로컬 개발 환경을 구성하고, CloudWatch나 Grafana 같은 도구로 서버 로그를 확인하며, GitHub Actions로 자동화된 CI/CD 파이프라인을 통해 코드가 배포되는 전체 흐름을 이해하는 것. 이것이 독립적으로 개발할 수 있는 능력의 기반이 됩니다. • 가장 현실적인 학습 로드맵은 채용공고입니다 인터넷에는 수많은 로드맵이 있습니다. 어떤 것은 너무 방대하고, 어떤 것은 너무 지엽적입니다. 가장 현실적이고 정확한 나침반은 채용공고입니다. 원티드, 랠릿, 로켓펀치 같은 IT 전문 채용 사이트에서 '신입 백엔드 개발자' 키워드로 공고를 10개 이상 정독하고, 자격조건과 우대사항에 반복 등장하는 키워드를 정리해 보세요. 그것이 집중해야 할 기술 스택의 우선순위이자, 가장 현실적인 학습 로드맵입니다. 신입 백엔드 개발자 채용 공고 | *출처: 랠릿 한국 신입 백엔드 시장에서 Java와 Spring 조합은 채용 공고가 가장 많고 학습 자료가 가장 풍부합니다. 2000년대부터 정부 표준 프레임워크로 채택되어 대기업과 금융권에 광범위하게 쓰였고, 스프링 부트의 등장으로 개발자가 비즈니스 로직에 집중할 수 있는 환경이 갖춰졌습니다. 노드, 장고, Go 같은 기술도 각자의 영역에서 훌륭하게 사용되지만, 지원할 수 있는 공고가 가장 많은 Java/Spring으로 기반을 먼저 다진 뒤 시야를 넓혀나가는 경로가 안정적입니다. 학습은 두 기둥으로 구성됩니다. 첫 번째는 CS 지식입니다. 운영체제, 네트워크, 데이터베이스, 자료구조와 알고리즘은 면접에서 암기력이 아닌 실제 개발 상황에의 적용 능력을 확인하는 방식으로 활용됩니다. "왜 DB에 인덱스를 사용했나요?", "TCP와 UDP의 차이를 알고 서비스에 적합한 것을 선택할 수 있나요?"처럼, 원리를 상황에 접목하는 질문이 대표적입니다. 이론을 공부할 때 항상 "이것이 내가 만드는 서비스에서 어떻게 쓰일까?"를 함께 고민하는 습관이 중요합니다. 두 번째는 실전 프로젝트입니다. "자바와 스프링을 공부했다"는 말보다, 실제 배포하고 운영해 본 프로젝트가 압도적으로 강력합니다. 클론 코딩이나 단순 게시판으로는 더 이상 변별력을 갖추기 어렵습니다. 기술 선택의 이유, 테스트 코드 작성, 클라우드 배포와 CI/CD 구축, 성능 개선 경험까지 담긴 프로젝트가 필요합니다. 프로젝트를 진행하는 모든 순간에 "왜 이 기술을 선택했는가?"를 스스로 질문하고 답을 찾아두어야 합니다. 그 고민의 깊이가 면접 답변의 수준을 결정합니다. • 서류부터 컬처핏까지, 채용 4단계 전략 실력이 아무리 뛰어나도 채용 담당자에게 효과적으로 보여주지 못하면 합격할 수 없습니다. 채용 프로세스는 크게 4단계로 진행됩니다. ✓ 1단계 서류 전형에서 이력서는 지원하는 포지션에 내가 가장 적합한 인재임을 논리적으로 설득하는 문서입니다. "스프링 시큐리티로 로그인 구현함"이 아니라, 어떤 문제가 있었고, 무엇을 선택했고, 어떻게 해결했으며, 결과가 어땠는지를 담아야 합니다. 수치로 표현 가능한 경험은 모두 수치화하세요. "API 응답 속도를 2,000ms에서 200ms로 개선했다"는 한 줄이 막연한 설명 열 줄보다 강력합니다. GitHub의 README.md는 포트폴리오의 첫인상입니다. 프로젝트 동기, 기술 선정 이유, 시스템 아키텍처, 문제 해결 과정이 담겨 있어야 면접관이 "고민하며 개발하는 주니어"라는 인식을 갖고 면접에 임하게 됩니다. 탈락하는 이력서의 패턴 ✓ 2단계 기술 검증은 코딩 테스트와 과제 테스트로 나뉩니다. 코딩 테스트는 알고리즘·자료구조 중심이며, 시간 복잡도와 공간 복잡도를 고려한 풀이가 필요합니다. 최근에는 SQL 문제의 비중도 높아지는 추세입니다. 과제 테스트는 기능이 동작하는 것을 넘어 코드 구조, 에러 처리, 테스트 코드, README 문서화까지 '어떻게 만들었는가'를 심층적으로 평가합니다. 요구사항을 단 하나도 빠뜨리지 않는 것이 1순위입니다. ✓ 3단계 기술 면접은 과제 코드 복기, CS 심층 검증, 프로젝트 경험의 꼬리물기 방식으로 진행됩니다. 내가 작성한 코드의 모든 줄을 설명할 수 있어야 합니다. "JPA를 사용했는데 N+1 문제는 어떻게 해결했나요?", "대용량 트래픽이 몰리면 현재 아키텍처에서 어떤 문제가 생기나요?" 같은 질문이 이어집니다. 모르는 질문이 나왔을 때 어설프게 꾸며내기보다 "깊게 생각해 보지 못했습니다. 면접 후 반드시 학습하겠습니다"라고 솔직하게 말하는 태도가 훨씬 좋은 평가를 받습니다. ✓ 4단계 컬처핏 면접은 조직 문화와의 적합성과 성장 가능성을 봅니다. 회사의 서비스와 기술 블로그를 미리 파악하고, 비전과 나의 성장 방향이 어떻게 연결되는지 준비해야 합니다. 면접 마지막의 "궁금한 점 있으신가요?"는 여러분을 어필할 마지막 기회입니다. "신입 개발자가 거치는 온보딩 과정이 어떻게 되나요?", "팀의 코드 리뷰는 어떻게 이루어지나요?" 같은 질문이 주도적인 인재라는 인상을 줍니다. 백엔드 개발자로 커리어를 시작하는 것은 기술 스택을 외우는 일이 아닙니다. 문제를 구조화하고, 팀과 소통하고, 코드를 운영까지 책임지는 역량을 쌓아가는 과정입니다. AI 도구가 코드 생성을 도와주는 환경이 되었지만, 어떤 코드가 적절한지 판단하고 프로덕션에서 실제로 동작하게 만드는 능력은 여전히 사람에게 요구됩니다. 기본이 단단한 개발자가 결국 더 멀리 갑니다. ▶ 다음글: 코드가 동작한다고 끝이 아닙니다 | 실무에서 원하는 '신입 백엔드 개발자'의 핵심 역량 7가지 위 컨텐츠는 이준형, 김석현 저자의『백엔드 개발자 온보딩 가이드』의 내용을 재구성하여 제작되었습니다.

엑셀 왕초보, 거기서 한 걸음이 안 떼어질 때

엑셀 왕초보, 거기서 한 걸음이 안 떼어질 때

엑셀, 입력하고 복사하고 칸 넓히는 건 되는데 그 이상은 늘 검색부터 하게 되지 않나요? 엑셀 실력에는 절벽 구간이 있습니다합계 구할 때 SUM 쓰는 건 아는데 시트가 나뉘어 있으면 막히고, 데이터 정리해야 하는데 빈 칸이랑 띄어쓰기 때문에 하나씩 손으로 고치고 있고, 피벗테이블은 이름만 들어봤습니다.이 구간이 은근 오래갑니다. 검색하면 그때그때 해결은 되니까 "나 엑셀 못하는 건 아닌데"라고 생각하거든요. 근데 보고서 하나 만드는 데 반나절이 걸리고 있다면, 그건 아직 몰라서 느린 겁니다. 검색으로 해결되는 건 그 순간뿐이에요필요할 때마다 "엑셀 VLOOKUP 사용법" 검색해서 따라 하는 분들 많으시죠. 그 방식의 문제는, 다음 달에 비슷한 상황이 오면 또 검색한다는 겁니다.블로그마다 설명이 조금씩 다르고, 예제 데이터는 내 파일이랑 구조가 다르고, 댓글에는 "저는 안 되는데요"가 줄줄이 달려 있어요. 이러다 보면 함수 하나 쓰자고 30분을 날리는 일이 반복됩니다. 검색은 모르는 한 가지를 해결하는 데는 좋아요. 그런데 전체 그림 없이 조각만 계속 모으면, 정작 자기가 뭘 모르는지를 모르는 상태가 계속됩니다. 오늘 바로 써볼 수 있는 것 두 가지그래도 글만 읽고 끝나면 아쉬우니까, 지금 엑셀 열어서 해볼 수 있는 걸 두 가지만 알려드릴게요.하나. 데이터 복사할 때 Ctrl+V 대신 Ctrl+Alt+V를 눌러보세요. '선택하여 붙여넣기' 창이 뜨는데, 여기서 '값'을 선택하면 수식이나 서식 없이 숫자만 깔끔하게 옮겨집니다. "복사했더니 서식이 깨졌어요" 문제, 이거 하나로 끝나요.둘. 반복 데이터를 입력할 일이 있으면 셀 오른쪽 아래 모서리의 작은 네모(채우기 핸들)를 아래로 드래그해보세요. 1월, 2월, 3월을 하나씩 타이핑하고 계셨다면, 이제 안 하셔도 됩니다.작은 거지만, 이런 게 쌓이면 하루에 30분은 벌 수 있어요. 그 30분이 모이면 퇴근 시간이 달라집니다엑셀이 빨라지면 생기는 변화는 단순히 "보고서를 빨리 만든다"가 아니에요. 데이터 정리에 쓰던 시간이 줄면, 그 시간에 내용을 더 들여다볼 수 있게 됩니다. 보고서의 속도가 아니라 질이 달라지는 거예요. VLOOKUP 하나만 쓸 줄 알아도 다른 시트에서 데이터 찾아오느라 눈 빠지게 스크롤하는 일이 사라지고, 피벗테이블 한 번만 써보면 수백 줄짜리 데이터를 요약하느라 행 하나하나 색칠하던 시절이 믿기지 않을 거예요. 결국 엑셀은 아느냐 모르느냐의 문제입니다. 어려운 게 아니라 아직 안 배운 것뿐이에요. 제대로 한번 잡아보고 싶다면체계적으로 배워보고 싶은 분들을 위해 하나 소개드릴게요. 유튜브 57만 구독자 IT 왕초보 전문 강사 누나IT(이성원)가 만든 엑셀 왕초보 탈출 : 보고 바로 써먹는 실무 치트키 강의입니다.기초부터 함수, 피벗테이블까지 16강으로 잡아주는 과정이에요. 한 강의 평균 10분 남짓이라 점심시간에 하나씩 들으면 2주면 끝나고요. 지출결의서, 매출 보고서 같은 실제 업무 문서로 실습하기 때문에 배운 그날 바로 쓸 수 있다는 게 포인트입니다. 검색 없이 엑셀 쓴 날이 한 번이라도 생기면, 그때부터 업무 체감이 완전히 달라질 거예요.[엑셀 왕초보 탈출 : 보고 바로 써먹는 실무 치트키] 👉 베스트셀러 저자 이성원(누나IT)의 엑셀 실무 16강 완성 커리큘럼 지금 확인하기

MCP와 A2A, 에이전트를 연결하는 프로토콜 | 표준화가 필요한 이유와 두 프로토콜의 설계 원리

MCP와 A2A, 에이전트를 연결하는 프로토콜 | 표준화가 필요한 이유와 두 프로토콜의 설계 원리

▶이전글: 랭그래프로 AI 에이전트를 설계하는 법 | 그래프 구조, 상태 관리, 실행 흐름의 원리 랭그래프로 에이전트를 설계하고 나면 자연스럽게 두 가지 한계에 부딪힙니다. 에이전트가 외부 도구나 데이터에 접근해야 하는 상황, 그리고 여러 에이전트가 함께 작업을 수행해야 하는 상황입니다. MCP와 A2A는 이 두 문제를 각각 해결하기 위해 등장한 프로토콜입니다. 이 글에서는 두 프로토콜이 어떤 문제를 해결하고, 어떤 구조로 동작하는지를 설명합니다. • MCP: LLM이 외부와 단절되는 문제를 표준화로 해결한다 LLM은 학습된 지식과 입력된 컨텍스트를 기반으로 답변을 생성하지만, 기업 시스템 내부 데이터, 실시간 업데이트되는 저장소, 특정 도구 등과 격리되어 있는 경우가 많습니다. 에이전트가 웹 검색이나 파일 탐색 같은 작업을 수행하려면 외부 시스템과 연결해야 하는데, 연결 방식이 도구마다 제각각이라면 개발자는 매번 새로운 통합 코드를 작성해야 합니다. MCP(Model Context Protocol)는 이 문제를 해결하기 위해 2024년 11월 앤트로픽(Anthropic)이 발표한 개방형 프로토콜입니다. LLM에 컨텍스트를 제공하는 방식 자체를 표준화하여, AI 모델이 다양한 데이터 소스 및 도구에 양방향 연결을 구축할 수 있도록 합니다. 앤트로픽은 MCP를 'AI용 USB-C포트'에 비유합니다. 다양한 하드웨어 연결 포트 규격들이 USB-C로 통일된 후 어떤 기기와도 호환이 가능해진 것처럼, 외부 컨텍스트가 MCP라는 표준을 따르기만 하면 특정 모델이나 프레임워크에 종속되지 않고 다양한 AI 모델과 쉽게 연동할 수 있다는 의미입니다. 개발자 입장에서는 단일 프로토콜만 익히면 여러 환경에 적용이 가능해집니다. 모델과 컨텍스트의 통신을 표준화하는 프로토콜인 MCP MCP는 호스트 - 클라이언트 - 서버로 구성된 3계층 아키텍처로 동작합니다. MCP 호스트는 클로드 데스크톱(Claude Desktop)이나 커서(Cursor)처럼 모델을 포함한 AI 애플리케이션입니다. MCP 클라이언트는 호스트 내부에 내장되어 사용자 요청을 MCP 표준 메시지 형태로 변환하고 서버에 전달합니다. MCP 서버는 외부 데이터 소스, 도구, API 등을 표준 방식으로 노출하며, 클라이언트의 요청을 받아 처리한 결과를 모델이 이용할 수 있는 형태로 반환합니다. 호스트가 여러 MCP 서버에 연결할 때 각 서버마다 클라이언트를 하나씩 생성하며, 클라이언트와 서버는 항상 일대일 연결을 유지합니다. MCP 호스트-클라이언트-서버 구조 MCP 서버가 모델에게 제공할 수 있는 것은 세 가지입니다. Tool은 데이터베이스 쿼리, API 호출 같이 모델이 직접 실행할 수 있는 기능이고, Resource는 파일이나 데이터베이스 스키마처럼 모델에게 전달할 컨텍스트 데이터이며, Prompt는 도구와 리소스를 활용해 응답을 생성할 수 있도록 재사용 가능한 템플릿입니다. 한 번 정의한 컨텍스트를 모델 종류와 관계없이 재사용할 수 있다는 점이 MCP의 핵심 가치입니다. AI 에이전트에 다양한 데이터 소스와 도구를 연결하는 MCP • A2A: 에이전트 간 소통이 막히는 문제를 프로토콜로 해결한다 MCP가 에이전트와 외부 도구 사이의 연결 문제를 해결한다면, A2A는 에이전트와 에이전트 사이의 연결 문제를 해결합니다. 작업이 복잡해질수록 하나의 에이전트가 모든 것을 처리하는 구조는 한계에 부딪히고, 역할이 다른 여러 에이전트가 협업해야 하는 상황이 생깁니다. 그런데 각 에이전트가 참조하는 데이터와 도구가 사일로화되어 있으면 에이전트 간 소통 자체가 어렵습니다. 서로 다른 프레임워크로 개발된 에이전트끼리는 더욱 그렇습니다. 구글이 발표한 A2A(Agent to Agent)는 이 문제를 해결하기 위한 개방형 프로토콜입니다. 서로 다른 프레임워크나 환경에서 구현된 AI 에이전트들이 독립적으로 개발되었더라도, 정보를 교환하며 하나의 통합된 시스템에서 동작할 수 있도록 에이전트 간 통신을 표준화합니다. A2A에는 세 가지 주요 참여자가 있습니다. 사용자(user)는 작업을 요청하는 주체이고, 클라이언트 에이전트(client agent)는 사용자를 대신해 요청을 분석하고 적절한 원격 에이전트와의 통신을 시작합니다. 원격 에이전트(remote agent)는 클라이언트로부터 전달된 작업을 실제로 처리하고 결과를 반환합니다. 원격 에이전트는 클라이언트 입장에서 내부 구조가 드러나지 않는 블랙박스처럼 동작하므로, 내부 구현 방식과 관계없이 안정적인 협업이 가능합니다. A2A 프로토콜 기반 에이전트 간 통신 아키텍처 A2A가 에이전트 간 협업을 안정적으로 지원하는 핵심 메커니즘은 능력 탐색(Capability Discovery)입니다. 원격 에이전트는 에이전트 카드(agent card)라는 JSON 형식의 문서를 통해 자신이 수행할 수 있는 작업과 기능을 외부에 공개합니다. 에이전트의 명함 역할을 하는 이 문서에는 서비스 엔드포인트, 제공 가능한 스킬 목록, 인증 요구 사항 등이 담겨 있습니다. 클라이언트 에이전트는 에이전트 카드를 통해 어떤 에이전트가 현재 요청에 가장 적합한지 판단하고 작업을 라우팅합니다. 클라이언트와 원격 에이전트의 상호작용은 항상 태스크(task) 단위로 진행됩니다. 각 태스크는 고유 ID를 가지며 submitted·working·completed·failed 등의 라이프 사이클을 따릅니다. 이를 통해 클라이언트는 작업 진행 상태를 추적하고, 멀티턴이나 장기 작업 흐름도 안정적으로 관리할 수 있습니다. A2A와 MCP의 역할: 에이전트 간 협업 vs 외부 리소스 연결 MCP와 A2A는 각각 독립된 문제를 해결하지만, 함께 사용할 때 진가를 발휘합니다. 각 에이전트가 MCP를 통해 필요한 외부 도구와 데이터를 활용하고, A2A를 통해 서로 연결되면 서로 다른 방식으로 구현된 에이전트들이 하나의 통합된 멀티 에이전트 시스템으로 동작할 수 있습니다. 위 컨텐츠는 공원나연(박나연) 저자의『만들면서 배우는 AI 에이전트 개발 입문+실전』의 내용을 재구성하여 제작되었습니다.

데이터가 많은데, 왜 결정의 순간엔 망설여질까

데이터가 많은데, 왜 결정의 순간엔 망설여질까

데이터 분석가 그리고 과학자가 회의실에서 가장 자주 듣는 말이 있습니다. "이번에 쿠폰 뿌렸더니 전환율이 올랐어요.""신규 유저한테는 30%는 줘야 반응이 오던데요.""기능 출시하고 나서 리텐션이 좋아진 것 같아요."다들 자신 있게 말합니다. 그런데 정말 쿠폰 때문에 매출이 올랐을까요? 그 시기에 시즌 이벤트가 같이 있지 않았나요? 30%를 받은 유저들은 원래부터 활성도가 높던 분들 아닐까요?이 질문 하나만 던져도 회의실 공기가 바뀝니다. "강한 의견"이 갑자기 갈 곳을 잃거든요. 그리고 정작 결정을 내려야 하는 순간, 우리는 망설이게 됩니다. 데이터는 많은데, 그래서 뭘 해야 하는지는 모르겠는 상태로요.1. Fewer the facts, the stronger the opinion데이터 기반 문화를 만들어 본 사람이라면 누구나 한 번쯤 마주치는 풍경이 있습니다.Waterfall 방식(기획·개발 후 Live 출시)에 익숙한 조직리더십은 데이터의 필요성을 강하게 느끼지 못하고실무자는 고객 가치보다 데이터 기술 자체에 집착하고그래서 양쪽이 공통의 평가 기준을 잃은 채, 사실보다 '의견'이 많아지고데이터와 실험은 자기 주장을 뒷받침하는 도구로 전락하고, 정작 가장 중요한 고객의 목소리는 머릿속에서 잊혀져 간다이 마지막 풍경이 가장 무섭습니다. 사람이 많이 모인 자리일수록 "제 경험상 이렇습니다"라는 말이 데이터를 이기거든요. 그리고 그 경험은 대개 상관관계를 인과관계로 착각한 결과입니다. “데이터가 적은 곳일수록, 의견이 강하다.” 쿠폰을 뿌렸더니 매출이 올랐다는 건 상관관계입니다. 쿠폰 때문에 매출이 올랐다는 건 인과관계고요. 이 둘을 구분하지 못하면, 우리는 다음 분기에도 똑같은 쿠폰을 뿌리면서 예산의 75%를 낭비하게 됩니다. 『Experimentation Works』라는 책은 실험 조직으로 나아가는 5단계를 제시합니다. Awareness → Belief → Commitment → Diffusion → Embeddedness 이 모델을 빌려서, 오늘은 그 첫 단계인 Awareness 이전의 이야기예요. 왜 우리는 결정의 순간에 망설이는가, 그리고 그 망설임을 어디서부터 풀어가야 하는가에 대한 글입니다. 2. 왜 인과추론과 실험이 필요한가 결정의 순간에 망설이는 이유는 단순합니다. 우리가 보고 있는 게 "무엇이 일어났는가"까지일 뿐, "무엇이 무엇을 움직였는가"는 아니기 때문입니다. 대시보드는 매일 숫자를 보여줍니다. 매출이 올랐다, DAU가 늘었다, 전환율이 개선됐다. 그런데 이 숫자들은 결과일 뿐 원인이 아닙니다. 누군가가 "왜 올랐죠?"라고 물으면, 우리는 그럴듯한 가설을 댑니다. "아마 신규 캠페인 덕분이겠죠", "새 기능 출시 효과 아닐까요?" 하지만 이 답들은 검증되지 않은 직관입니다. 인과추론은 바로 이 지점에서 시작됩니다. "A 때문에 B가 일어났다"고 말하려면, A가 없었을 때 B가 어땠을지를 따져 묻는 능력이 필요합니다. 같은 기간에 캠페인이 없었다면 매출이 어땠을까? 비슷한 유저인데 쿠폰을 못 받은 그룹은 어떻게 행동했을까? 이런 질문을 설계로 풀어내는 게 실험이고, 관측 데이터로 풀어내는 게 인과추론의 다양한 방법론입니다.여기서 한 가지 더 짚어둘 게 있어요. 우리가 가진 편향(Bias) 입니다. 사람은 누구나 자기 경험과 익숙한 맥락 안에서 가설을 세웁니다. "우리 유저는 이런 사람들이야", "이 카테고리는 원래 이렇게 돌아가" — 이 익숙함이 새로운 가능성을 보지 못하게 막습니다. 인과추론은 이 편향을 의식적으로 드러내고 분리해내는 작업이기도 합니다. 결정의 순간에 망설이는 이유는 결국 이겁니다. 우리는 무엇이 무엇을 움직였는지 모르고, 그걸 따져 물을 도구를 갖고 있지 않기 때문입니다. 인과추론과 실험은 그 도구를 손에 쥐어주는 일이고요. 3. 데이터 기반 문화 = 데이터 맹신이 아니다 여기서 한 가지 짚고 싶은 게 있어요. 데이터 기반 문화는 데이터를 맹신하자는 게 아닙니다. 구성원 각자가 가설을 세우고, 스스로 검증해볼 수 있는 토양을 만드는 것입니다. "신규 유저에게는 30%, 장기 유저에게는 15%"라는 결정이 있다고 해봅시다. 이게 누군가의 경험과 직관에서 나온 숫자라면, 다음 담당자가 바뀌면 또 다른 숫자가 등장합니다. 그런데 이게 실험으로 검증된 결과라면, 조직의 자산으로 남습니다. 리더십의 중요성은 아무리 강조해도 지나치지 않습니다. 프로덕트 회의에서 데이터 조직에게 가장 먼저 이야기할 기회를 주는 리더가 있다면, 그 조직은 이미 절반 이상 와 있는 겁니다. 데이터로 먼저 대화를 시작할 수 있다는 경험은 그만큼 강력하거든요. 하지만 아무리 리더가 적극적이라도, 실무자가 그저 주어진 프로젝트를 수동적으로 분석하는 것으로만 인식한다면 문화는 뿌리내리지 못합니다. 결국 실무자 스스로가 자기 제품을 사랑해야 하고, 고객의 목소리에 호기심을 가져야 합니다. 궁극적으로 우리가 만들고 싶은 건 데이터 분석가가 필요 없는 날일지도 모릅니다. 모두가 신뢰할 수 있는 결과로 고객 경험을 증진시키는 조직. 단기 매출이 아닌, 고객이 떠나지 않게 만드는 데 데이터를 쓰는 조직이요. 4. 시간이 무한하다면 의견도 괜찮습니다 하지만 시간은 유한하죠. "우리 구성원의 시간, 그리고 제품에게 주어진 시간은 유한하다." 시간이 무한하다면 직관에 맡겨도 됩니다. 결국엔 정답에 도달할 테니까요. 그런데 시간이 유한하면, 우리는 틀린 가설을 빨리 버리고 맞는 가설로 갈아타는 능력이 필요해집니다.그게 실험이고, 인과추론입니다. AI가 정답이 있는 문제를 풀어주는 시대에, 인간이 해야 할 일은 결국 풀어야할 문제를 정의하는 것 아닐까요. 결정의 순간에 망설이지 않으려면, 데이터를 더 많이 모으기 전에 "무엇이 무엇을 움직였는가"를 물을 줄 알아야 합니다. Next in series 이 시리즈는 5단계를 따라갑니다.Awareness — 조직이 "어, 우리 의견이 너무 많네?"를 자각하는 순간Belief — 한 번의 실험이 만든 작은 균열그 다음으로 Commitment, Diffusion, Embeddedness데이터를 바라보는 사람에서 데이터로 결정하는 사람으로. 그 여정의 첫 글이었습니다. 함께 보면 좋은 강의 데이터는 많아졌는데, 결정의 순간엔 왜 여전히 망설이게 될까요?『데이터 실무자의 사고력 강화 : AI 인과추론 실무』는 크래프톤 데이터 분석가 신진수님과 함께 상관관계와 인과관계를 구분하는 사고 방식, 그리고 실무에서 실제로 활용되는 실험과 판단의 기준을 다루는 강의입니다.단순히 분석하는 것을 넘어, “무엇이 무엇을 움직였는가”를 고민해보고 싶다면 추천드립니다. 👉 『데이터 실무자의 사고력 강화 : AI 인과추론 실무』 보러 가기

랭그래프로 AI 에이전트를 설계하는 법 | 그래프 구조, 상태 관리, 실행 흐름의 원리

랭그래프로 AI 에이전트를 설계하는 법 | 그래프 구조, 상태 관리, 실행 흐름의 원리

▶이전글: AI 에이전트, 어떻게 설계할까? | LLM 의사결정 구조부터 아키텍처 선택 기준까지 AI 에이전트를 구현할 때 가장 먼저 부딪히는 질문은 "어떤 프레임워크로 에이전트의 흐름을 설계할 것인가"입니다. LLM 호출 코드를 작성하는 것과 에이전트의 실행 흐름을 구조적으로 설계하는 것은 전혀 다른 작업입니다. 이 글에서는 랭그래프(LangGraph)가 에이전트 시스템을 어떻게 표현하고 관리하는지, 그 핵심 개념과 동작 원리를 설명합니다. • 랭그래프란 무엇인가: 그래프 기반 에이전트 설계 프레임워크 랭그래프(LangGraph)는 다양한 에이전트 시스템을 설계하고 구현하기 위한 프레임워크로, 시스템의 로직을 노드와 엣지로 구성된 그래프로 표현하는 것이 특징입니다. 랭그래프에서는 에이전트나 기능 단위는 '노드(node)'로, 노드 간의 실행 경로는 '엣지(edge)'로 나타냅니다. 그래프 구조로 작업 흐름을 연결하므로 경로가 복잡한 에이전트도 비교적 쉽게 설계할 수 있습니다. 단순히 흐름을 연결할 뿐 아니라 반복이나 병렬 처리와 같은 복잡한 제어 흐름까지 명확하게 표현할 수 있어, 대규모 에이전트 시스템에서도 논리적 복잡성을 효과적으로 관리할 수 있습니다. 랭그래프는 '상태 관리'를 핵심 철학으로 삼아 설계되었습니다. 에이전트가 작업을 수행하는 과정에서 발생하는 모든 중간 정보와 상태 변화가 그래프 내에서 관리되므로, 복잡한 에이전트 간 협업도 안정적으로 처리할 수 있습니다. 또한 랭그래프는 랭체인(LangChain) 생태계와 통합되어 있어, 랭체인의 LLM 호출, 도구 사용, 메모리 등 이미 널리 사용되는 다양한 구성 요소를 그대로 활용하기에 좋습니다. 랭그래프를 사용하는 이유는 크게 네 가지 장점으로 정리됩니다. ① 여러 단계를 가지는 복잡한 시스템도 그래프 구조로 비교적 쉽게 구현할 수 있습니다. ② 사용자가 원하는 로직의 흐름을 노드와 엣지로 연결해 단계별로 구성할 수 있고, 시스템 구조의 변경이 필요할 때도 재설계와 구현이 용이합니다. ③ 로직 중 필요한 조건에 따라 그래프를 분기할 수 있어 보다 유연한 설계가 가능합니다. ④ 이전 단계로 되돌아가는 양방향 파이프라인을 구성할 수 있어 전체 성능을 개선할 수 있습니다. 실제로 레플릿(Replit)은 멀티 에이전트 시스템 운영에, 링크드인(LinkedIn)은 사용자의 질문을 SQL로 변환하는 사내 멀티 에이전트 시스템 구축에, 우버(Uber)는 내부 코드 마이그레이션 및 테스트 자동화에 랭그래프를 활용하고 있습니다. 에이전트의 작업 흐름을 그래프 구조로 표현한 예시 • 랭그래프의 3가지 핵심 구성 요소: 상태, 노드, 엣지 랭그래프 기반 에이전트를 이해하려면 세 가지 핵심 구성 요소가 그래프에서 각각 어떤 역할을 하는지 정확히 파악해야 합니다. ◦상태(State): 에이전트가 지속적으로 관리해야 하는 데이터 구조 상태(state)는 그래프, 즉 에이전트의 현재 상태를 나타내는 데이터 구조입니다. 에이전트가 작업을 수행하면서 지속적으로 관리해야 하는 정보라고 할 수 있습니다. 예를 들어 챗봇의 경우 사용자로부터 메시지를 받아야 하고, 그에 대한 결과 메시지를 에이전트가 반환해야 하므로 메시지를 관리하는 구조가 필요합니다. 이 상태 정의를 '그래프 스키마(graph schema)'라고 하며, 이를 통해 에이전트 그래프가 사용자의 질문과 답변을 정해진 데이터 구조에 맞게 입력받고 반환하도록 보장할 수 있습니다. 작업의 중간 결과도 이 상태에 지속적으로 업데이트됩니다. 상태의 업데이트 방식을 지정하는 것이 리듀서(reducer) 함수입니다. 리듀서 함수를 통해 데이터 스키마 속 키들이 어떻게 업데이트될지를 설정할 수 있습니다. 랭그래프에서는 에이전트로 들어온 메시지를 누적 저장하기 위해 리듀서 함수인 add_messages를 제공합니다. 이 함수는 기존 메시지에 새로운 메시지를 추가할 때 사용되며, 각 메시지는 고유 ID를 가지고 동일한 ID를 갖는 경우 기존 메시지에 새로운 메시지가 덮어쓰인 형태로 관리됩니다. “messages” 상태를 입력받고 업데이트하여 반환하는 그래프 에이전트 예시 ◦노드(Node): 에이전트가 수행하는 작업의 단위 노드(node)는 에이전트가 수행하는 작업의 단위이자, 작업의 내부 로직을 구현하는 함수입니다. 노드는 단순히 작업을 실행할 뿐만 아니라 작업 수행을 통해 상태를 업데이트합니다. 노드 함수의 반환값은 노드를 통해 업데이트되는 상태값입니다. 예를 들어 chatbot이라는 이름으로 구현된 노드는 내부에서 답변 생성을 담당하며, 그래프의 상태를 입력받고 상태에 들어 있는 사용자 입력값을 기반으로 답변을 생성합니다. 답변 생성이 완료되면 생성된 답변을 messages 키에 담아 반환합니다. add_node를 통해 노드를 그래프에 등록할 수 있습니다. 답변 생성 작업을 수행하는 chatbot 노드 실행 후 상태 변화 ◦엣지(Edge): 다음에 실행될 경로를 결정하는 요소 엣지(edge)는 다음에 실행될 경로를 결정합니다. 특히 에이전트 시스템에서 다음 작업을 결정하는 데 꼭 필요한 요소입니다. 랭그래프에서 구현할 에이전트 그래프는 반드시 시작점(START)과 종료점(END)이 존재합니다. 그래서 시스템 내에서 정의되어야 할 노드가 1개이더라도 시작점 - 노드 - 종료점을 연결해주어야 합니다. 시작점과 노드, 노드와 종료점을 연결한 엣지 에이전트 시스템을 설계하다 보면 조건에 따라 경로를 다르게 구성해야 하는 상황이 발생합니다. 라우터 LLM에서의 결정에 따라 다음 단계가 달라지는 경우가 이에 해당합니다. 이때 조건부 엣지(conditional edges)를 통해 조건에 따라 달라지는 경로를 구현할 수 있습니다. 조건부 엣지는 다음으로 이동할 노드를 결정하는 함수를 호출하여 결과에 따라 이동하는 엣지로, 특정 노드에서 이동할 수 있는 다음 단계가 2개 이상이고 조건에 따라 하나를 선택해야 할 때 사용합니다. 이처럼 조건부 엣지를 사용하면 에이전트의 실행 흐름을 상태와 조건에 따라 유연하게 제어할 수 있습니다. 특히 응답 길이, 의도 분류 결과 등 라우터 역할을 하는 중간 노드의 출력 결과를 기준으로 다음 행동을 결정해야 하는 경우에 유용합니다. 조건에 따라 달라지는 경로를 처리하는 엣지 랭그래프가 중요한 이유는 상태·노드·엣지라는 단순한 구성 요소만으로 AI 에이전트의 복잡한 작업 흐름을 구조적으로 표현하고 유지/보수할 수 있는 기반을 제공하기 때문입니다. 이 세 요소를 정의하고 연결하면 그래프가 완성되고, 랭그래프는 이 구조 위에서 도구 호출, RAG 기반 검색, 멀티 에이전트 협업까지 일관된 방식으로 확장할 수 있도록 설계되어 있습니다. ▶다음글: MCP와 A2A, 에이전트를 연결하는 프로토콜 | 표준화가 필요한 이유와 두 프로토콜의 설계 원리 위 컨텐츠는 공원나연(박나연) 저자의 『만들면서 배우는 AI 에이전트 개발 입문+실전』의 내용을 재구성하여 제작되었습니다.

AI 에이전트, 어떻게 설계할까? | LLM 의사결정 구조부터 아키텍처 선택 기준까지

AI 에이전트, 어떻게 설계할까? | LLM 의사결정 구조부터 아키텍처 선택 기준까지

AI 에이전트를 "만든다"는 것과 "설계한다"는 것 사이에는 생각보다 큰 간극이 있습니다. LLM을 연결하고 프롬프트를 작성하는 것만으로는 에이전트가 완성되지 않습니다. 해결하려는 문제를 분석하고, 적절한 패턴을 선택하며, 구조 전체를 설계하는 과정이 필요합니다. 이 글에서는 LLM이 에이전트 시스템 안에서 어떤 원리로 동작하는지, 그리고 어떤 기준으로 에이전트 구조를 선택해야 하는지 정리했습니다. • LLM은 답변 생성기가 아니라 의사결정 엔진이다 AI 에이전트를 제대로 이해하려면 그 핵심에 있는 LLM이 시스템 안에서 무엇을 판단하고 어떤 역할을 수행하는지부터 알아야 합니다. LLM은 단순히 답변을 생성하는 모델이 아니라, 에이전트가 다음에 무엇을 할지 결정하는 의사결정 엔진으로 작동합니다. 거대 언어 모델(LLM)은 방대한 텍스트 데이터를 학습해 자연어를 이해하고 생성하는 인공신경망 기반의 모델입니다. 입력된 맥락을 바탕으로 다음에 이어질 내용을 예측하는 과정에서 문제 해결에 필요한 단계나 행동을 추론하는 능력도 갖추고 있습니다. 이러한 특성이 AI 에이전트에서 핵심적인 기반 요소로 활용됩니다. LLM이 이러한 능력을 갖춘 이유는 대규모 텍스트 학습을 통해 언어의 패턴과 구조를 학습했기 때문입니다. 모델은 학습 과정에서 수많은 파라미터를 지속적으로 조정하며 주어진 맥락을 바탕으로 합리적인 다음 단계나 선택지를 추론할 수 있는 능력을 확보하게 됩니다. LLM이 자연어 이해와 추론을 담당한다면, 에이전트는 이를 기반으로 목표 달성을 위한 행동을 계획하고 실행합니다. • LLM이 다음 행동을 결정하는 방식: 라우터 LLM은 주어진 선택지 안에서 사용자 입력의 의미를 해석하고 다음에 수행할 행동을 결정할 수 있습니다. 이러한 '다음 동작을 선택하는 역할'을 하는 요소를 라우터(router)라고 합니다. 예를 들어 고객 문의를 처리하는 챗봇을 설계한다면, LLM은 들어온 문의가 '주문 조회', '배송 조회', '교환/환불' 중 어느 유형에 해당하는지 분류해 다음 처리 로직을 결정합니다. 사용자의 문의에 대한 LLM의 의도 파악 검색 기능을 갖춘 에이전트라면, 사용자 질문의 성격에 따라 웹 검색 결과를 활용할지, 사내 내부 문서를 참조할지를 LLM이 판단합니다. 이 모든 판단 과정이 라우터로서의 LLM이 수행하는 역할입니다. 이 라우터 기능을 시스템 안에서 적절히 활용하면 에이전트의 행동이 상황에 따라 달라지는 동적인 구조를 설계할 수 있습니다. • AI 에이전트를 구성하는 3가지 핵심 요소 완전한 AI 에이전트를 구축하기 위해서는 추론 능력, 도구 호출, 기억력이라는 세 가지 핵심 요소가 필요합니다. ◦추론 능력: ReAct와 Reflection 에이전트가 결과물을 도출하기까지 거치는 생각의 과정을 구현하는 대표적인 추론 패턴으로 ReAct와 Reflection이 있습니다. ReAct는 추론(Reasoning)과 행동(Acting)의 합성어로, 문제에 대한 사고 과정과 실제 행동을 함께 수행하도록 유도하는 방법론입니다. ReAct 기반 에이전트는 생각(Thought) → 행동(Action) → 관찰(Observation)의 세 단계를 반복하며 동작합니다. 에이전트는 먼저 어떤 작업을 수행해야 할지 생각하고, 그 생각을 기반으로 작업을 실행하며, 실행 결과를 관찰해 다음 생각의 입력으로 활용합니다. 목표한 결과가 나올 때까지 이 흐름을 반복함으로써 에이전트는 상황에 따라 판단하고 실행 결과를 반영하며 작업 흐름을 스스로 제어하는 구조로 동작합니다. ReAct의 3단계 Reflection은 초기 답변에 대한 반성을 통해 더 정확한 결과를 도출하도록 하는 기법입니다. 한 번의 실행으로 작업을 종료하는 대신 시스템 내부에 결과 검토와 재평가 단계를 포함함으로써 보다 안정적인 결과를 유도합니다. 에이전트가 스스로 오류를 발견하고 개선하는 단계를 추가로 수행하게 되는 이 원리는, 반복 구조를 통해 결과 품질을 높이는 핵심 설계 방식과 연결됩니다. Reflection을 적용한 에이전트 ◦도구 호출 LLM 모델 자체만으로는 웹 검색, 파일 탐색, API 호출과 같은 작업을 수행할 수 없습니다. LLM은 특정 시점까지의 데이터를 학습한 모델이기 때문에 최신 정보나 실시간 데이터에 접근할 수 없기 때문입니다. 이때 LLM이 외부 도구 사용이 필요한지 판단하여 필요한 도구를 선택하는 과정을 도구 호출(tool calling)이라고 합니다. 도구를 사용해 능력을 확장한 LLM 도구 호출은 LLM에게 특정 능력을 부여하여 학습된 기존의 지식으로는 해결할 수 없는 문제를 풀게 하기 위한 기법입니다. 중요한 점은 어떤 도구를 사용할지 LLM이 스스로 판단한다는 것입니다. 에이전트가 문제 해결에 필요한 기능을 도구로 추상화함으로써 상황에 따라 적절한 기능을 선택하고 조합하며 보다 유연하게 동작할 수 있습니다. ◦메모리 에이전트가 사람과 더욱 자연스럽게 상호작용하려면 이전 대화 내용을 기억하는 것에 그치지 않고, 사용자의 맥락과 성향을 장기적으로 기억할 수 있어야 합니다. 에이전트에서 메모리는 범위에 따라 두 가지로 구분됩니다. 단기 메모리(short-term memory)는 현재 대화 안에서 발생한 정보를 의미하며, 현재 대화의 맥락을 잊지 않고 유지해 줍니다. 장기 메모리(long-term memory)는 사용자가 에이전트에 처음 접속해 현재까지 나눈 대화 전체를 기반으로 습득한 정보를 의미하며, 사용자의 과거 경험과 성향에 기반하여 답변하는 개인화된 에이전트 구현과 연결됩니다. 단기 메모리와 장기 메모리 •싱글 에이전트와 멀티 에이전트, 어떤 구조를 선택해야 할까 에이전트 설계에서 구조 선택은 성능과 유지보수성 모두에 영향을 미칩니다. 에이전트 설계에 절대적인 정답은 없지만, 목적과 정보의 양에 따라 적합한 구조가 달라집니다. ◦싱글 에이전트 싱글 에이전트(single agent)는 하나의 에이전트가 독립적으로 모든 추론과 행동을 수행하는 시스템입니다. 상황을 스스로 판단하고 행동하는 과정이 하나의 주체 안에서 이루어지며, 다른 에이전트와 협력하거나 역할을 분리하지 않는다는 점이 핵심입니다. 의사결정이 빠르고 불필요한 소통 비용이 발생하지 않는다는 장점이 있습니다. 싱글 에이전트 구조가 적합한 경우는 다음 세 가지 기준으로 정리할 수 있습니다. 작업의 목적이 하나로 명확한 경우, 판단이 하나의 흐름으로 이어지는 경우, 그리고 전체 맥락이나 상태를 하나의 에이전트가 유지하는 것이 중요한 경우입니다. 웹 검색 기반 질의응답이나 파일 관리 에이전트가 대표적인 예시에 해당합니다. ◦멀티 에이전트 멀티 에이전트(multi agent)는 여러 개의 에이전트가 각자의 판단을 수행하며 상호작용하는 구조입니다. 단순히 싱글 에이전트를 여러 개 나열한다고 해서 멀티 에이전트가 되는 것은 아니며, 핵심은 에이전트 간 의사결정과 정보 교환이 발생하는가에 있습니다. 싱글 에이전트 구조에서는 작업이 복잡해질수록 하나의 에이전트가 고려할 정보의 양과 판단의 범위가 급격히 늘어납니다. 멀티 에이전트 구조에서는 이러한 부담을 여러 에이전트에 나누어 맡길 수 있기 때문에 각 에이전트가 자신에게 할당된 역할과 목적에만 집중해 안정적인 판단을 유지할 수 있습니다. 싱글 에이전트와 멀티 에이전트 멀티 에이전트가 필요한 상황은 작업 수행의 판단 기준이 명확히 다른 역할들이 하나의 목표를 위해 협업해야 할 때입니다. 다만 멀티 에이전트 구조가 효과적으로 동작하려면 에이전트 간 소통 방식이 함께 설계되어야 합니다. 어떤 정보를, 언제, 어떤 수준까지 공유할 것인지 명확하지 않으면 정보가 누락되거나 맥락이 어긋날 수 있습니다. AI 에이전트를 설계한다는 것은 LLM의 의사결정 능력을 구조화된 흐름 안에 담는 일입니다. LLM이 라우터로 작동하고, 추론·도구 호출·메모리라는 세 요소가 결합되며, 문제의 성격에 따라 싱글 또는 멀티 에이전트 구조를 선택하는 것, 이 판단의 기준을 이해하는 것이 에이전트 시스템 설계의 출발점입니다. ▶다음글: 랭그래프로 AI 에이전트를 설계하는 법 | 그래프 구조, 상태 관리, 실행 흐름의 원리 위 컨텐츠는 박나연(공원나연) 저자의『만들면서 배우는 AI 에이전트 개발 입문+실전』의 내용을 재구성하여 제작되었습니다.

바이브 코딩을 시작하기 위한 완벽한 작업실 꾸리기

바이브 코딩을 시작하기 위한 완벽한 작업실 꾸리기

바이브 코딩을 시작하는 데 거창한 장비를 갖출 필요는 없습니다. 바이브 코딩의 문턱은 우리 생각보다 낮습니다. 지금 책상 위에 있는 그 컴퓨터도 새로운 마법을 시작하기에 충분하죠. 이제 컴퓨터를 켜고 AI와 함께 첫 번째 결과물을 만들기 위한 작업을 준비를 해 봅시다. ➀ 파이썬 - 컴퓨터와 대화하기 위한 필수 준비물 우리는 외국인과 대화하기 위해 영어, 일본어, 중국어 등 다양한 언어를 공부합니다. 컴퓨터도 동일합니다. 대화를 나누려면 그들의 언어를 배워야 하죠. 물론 인공지능이 사람의 말을 놀랍도록 잘 알아듣는 시대가 되었지만, 실제로 컴퓨터를 정교하게 움직이는 본체는 별도의 프로그래밍 언어이기 때문입니다. 수많은 언어 중에서도 데이터 처리와 인공지능, 특히 바이브 코딩 분야에서 파이썬의 위상은 절대적입니다. 최근 인공지능이 가장 능숙하게 다루는 언어 역시 파이썬이죠. 코드 없이도 바이브 코딩을 시작할 수 있지만, 파이썬 기초를 다져둔다면 훨씬 더 유쾌한 바이브 코딩의 세계를 경험하실 수 있을 겁니다. ✅무료 파이썬 강좌https://github.com/KoreaEva/Python/blob/master/Video.md파이썬이 생소한 분들을 위해 무료 강좌를 준비했습니다. 기초 지식을 갖추고 돌아오면 학습의 속도가 크게 빨라질 것입니다. ➁ 비주얼 스튜디오 코드 - 전 세계 개발자에게 가장 사랑받는 작업실 컴퓨터와 대화하기 위한 기초적인 언어를 익혔다면 무엇을 해야 할까? 대화를 할 장소가 필요합니다. 여기서는 누구나 쉽고 간편하게 시작할 수 있는 비주얼 스튜디오 코드 (Visual studio code, 이하 VS Code)를 사용합니다. VS Code는 마이크로소프트가 만든 무료 프로그램입니다. 겉보기에는 단순한 코드 편집기처럼 보이지만, 들여다보면 매우 똑똑하고 유용한 기능이 가득 들어 있어 개발자들에게는 마치 잘 갖춰진 작업실같죠. 설치가 간편하고 작동이 가벼울 뿐만 아니라, 필요한 기능을 자유롭게 추가할 수 있다는 점이 큰 매력입니다. 최근에는 여기에 깃허브 코파일럿(GitHub Copilot)이라는 인공지능 도우미도 합류했습니다. 이름 그대로 코딩이라는 비행을 옆에서 돕는 부조종사 역할을 하는 이 AI는 사용자가 코드를 입력하면 다음에 올 내용을 자동으로 예측해 추천해 줍니다. 예를 들어 날씨 정보를 알려주는 프로그램을 만들겠다고 코드를 적기 시작하면, 코파일럿은 그에 맞는 코드 구조를 자동으로 채워주거나 복잡한 코드를 알아서 정리해 주기도 합니다. ➂ 쉽고 빠르게 개발 환경 준비하기이제 본격적으로 바이브 코딩을 즐기기 위한 개발 환경을 준비합니다. 차근차근 파이썬, VS Code, 깃허브 코파일럿을 준비하면 됩니다. 1) 파이썬 설치하기파이썬은 누구나 무료로 내려받아 사용할 수 있습니다. 홈페이지의 [Downloads]에서 운영체제에 맞는 설치 파일을 받아주세요. 이때 설치 버전을 결정할 때 나름의 전략이 필요합니다. 최신 버전이 좋아보이지만, 너무 최신 버전은 기존 코드와 호환성 문제가 있을 수 있고, 반대로 너무 오래된 버전은 최신 기술을 구현하는 데 제약이 따릅니다. 이 책에서는 가장 안정적이고 호환성이 뛰어난 3.11 버전을 추천합니다. ✅파이썬 공식 홈페이지: https://www.python.org 설치 과정은 생각보다 단순합니다. 다운로드한 파일을 실행하고 화면의 안내에 따라 [Next] 버튼만 누르면 됩니다. 다만 한 가지 꼭 챙겨야 할 부분이 있습니다. 설치 첫 화면 아래쪽에 있는 ‘Add Python to PATH’ 항목에 반드시 체크해 주세요. 이 작은 체크 하나가 앞으로 컴퓨터가 파이썬을 어디서든 알아볼 수 있게 만들어 주는 중요한 약속과 같습니다. 출처: <누구나 코딩하는 시대, 1일 10분 바이브 코딩> p.50 설치가 끝났다면 제대로 들어왔는지 확인해 봅시다. 윈도우의 명령 프롬프트나 맥의 터미널을 열고 python이라고 입력해 봅니다. 화면에 ‘Python 3.x.x’와 같은 버전 정보가 나타나면 모든 준비가 끝난 것입니다. 컴퓨터가 이제 파이썬이라는 언어를 알아듣기 시작했다는 신호입니다. 2) VS Code 설치하기 이제 파이썬과 대화를 나눌 작업실, VS Code를 마련할 차례입니다. VS Code 역시 무료입니다. 공식 홈페이지에서 본인의 운영체제에 맞는 버전을 내려받아 설치하면 됩니다. 설치 과정은 파이썬보다 더 단순합니다. 내려받은 파일을 실행하고 약관에 동의한 뒤, 기본 옵션 그대로 [Next]를 눌러 진행하면 몇 분 안에 설치가 끝납니다. ✅ VS Code 공식 홈페이지: https://code.visualstudio.com VS Code 초기 화면 VS Code를 처음 실행하면 깔끔하고 시원한 화면이 여러분을 맞이합니다. 처음에는 다소 휑하게 느껴질 수 있지만 걱정하지 않으셔도 됩니다. 이 작업실은 ‘익스텐션(Extensions)’이라는 도구를 추가하며 나만의 공간으로 꾸며 갈 수 있거든요. 마치 텅 빈 방에 책상과 조명, 화분을 하나씩 들여놓는 것과 비슷합니다. 가장 먼저 들여놓아야 할 도구는 두 가지입니다. Python 익스텐션 — VS Code가 파이썬 코드를 더 똑똑하게 이해하고 도와주도록 만드는 필수 도구한국어 언어팩 — 메뉴를 한글로 바꿔주는 도구로, 영어가 부담스럽다면 함께 설치하면 좋습니다 설치 방법도 어렵지 않습니다. 왼쪽 사이드바의 사각형 네 개 모양 아이콘(Extensions)을 누르고 검색창에 ‘Python’ 또는 ‘Korean’을 입력한 뒤, [Install] 버튼을 누르기만 하면 됩니다. 클릭 몇 번이면 작업실에 새로운 도구가 들어오는 셈이죠. 3) 깃허브 코파일럿 설치하기 마지막 단계는 가장 설레는 순간입니다. 우리의 든든한 인공지능 부조종사, 깃허브 코파일럿을 작업실로 초대할 차례입니다. 깃허브 코파일럿을 사용하려면 먼저 깃허브(GitHub) 계정이 필요합니다. 깃허브는 전 세계 개발자들이 자신의 코드를 보관하고 공유하는 거대한 도서관이자 만남의 장입니다. 이메일 주소만 있으면 누구나 무료로 가입할 수 있습니다. ✅ 깃허브 공식 홈페이지: https://github.com 가입을 마쳤다면 이제 코파일럿을 깨울 차례입니다. 예전엔 깃허브 코파일럿을 사용하기 위해 익스텐션을 설치해야 했지만 지금은 기본으로 설치되어 있습니다. 만약 설치되어 있지 않다면 익스텐션 메뉴에서 ‘GitHub Copilot’을 검색해 설치를 진행합니다. 설치가 끝나면 별도의 과정 없이 VS Code 내에 자동으로 활성화됩니다. 처음 코파일럿을 실행할 때 깃허브 계정 로그인이 필요합니다. 설치 후 브라우저창이 자동으로 열리면 깃허브 계정으로 로그인하고, VS Code와 코파일럿을 연결하는 권한을 허용합니다. 만약 설치 후 로그인 창이 뜨지 않아도 괜찮습니다. 나중에 다시 로그인을 요구하기 때문입니다. 자, 이제 모든 준비가 끝났습니다. 파이썬이라는 언어를 익혔고, VS Code라는 작업실을 꾸렸으며, 깃허브 코파일럿이라는 든든한 부조종사가 옆자리에 앉았습니다. 이 세 가지가 모이는 순간, 여러분의 컴퓨터는 더 이상 단순한 사무용 기기가 아닙니다. 상상을 현실로 옮기는 창작의 공간이 됩니다.위 콘텐츠는 『누구나 코딩하는 시대, 1일 10분 바이브 코딩』에서 발췌했습니다. 바이브 코딩이 등장한 이후 프로그램을 만드는 모습이 바뀌었습니다. 기존처럼 키보드 위에서 딱딱한 프로그래밍 언어를 쓰며 씨름하는 대신, 내 머릿속 아이디어와 상상력을 인공지능에게 말하기만 하면 되거든요. 마치 숙련된 조수와 대화하듯이 리듬을 타며 소프트웨어를 만들어내는 방법은 우리를 누군가 만든 앱만 다운로드 받던 수동적인 사용자에서 내게 필요한 도구를 직접 빚어내는 창작자의 자리로 안내할 것입니다. 그 시작을 『누구나 코딩하는 시대, 1일 10분 바이브 코딩』과 함께 해보시기 바랍니다.

조개껍데기에서 스테이블코인까지, 돈은 어떻게 진화하고 있는가

조개껍데기에서 스테이블코인까지, 돈은 어떻게 진화하고 있는가

지폐가 사라진다고 돈이 사라지는 것은 아닙니다 당신의 지갑을 한번 열어보십시오. 지폐가 몇 장이나 들어 있습니까? 1만 원권 한두 장, 어쩌면 한 장도 없을지 모릅니다. 우리는 이미 돈을 '들고 다니지' 않는 시대를 살고 있습니다. 그런데 흥미로운 사실이 있습니다. 지폐가 줄어든 만큼 우리가 가난해졌습니까? 그렇지 않습니다. 오히려 결제는 더 빨라졌고, 돈은 더 자유롭게 움직입니다. 돈이 사라진 것이 아니라, 돈의 형태가 바뀐 것입니다. 지금 우리는 인류 역사상 세 번째 화폐 혁명의 한가운데에 서 있습니다. 조개껍데기에서 금속으로, 금속에서 종이로, 그리고 이제 종이에서 '스스로 작동하는 코드(Code)' 로. 이 글에서는 그 거대한 흐름을 차분히 짚어보려 합니다. 첫 번째 혁명: 조개껍데기에서 금속으로 태초의 돈은 '물건' 그 자체였습니다. 조개껍데기, 곡식, 가축. 이런 것들이 화폐 역할을 했습니다. 문제는 명확했습니다. 조개껍데기는 부서지고, 곡식은 썩고, 가축은 도망갑니다. 게다가 누군가 해변에서 조개를 잔뜩 주워 오면 갑자기 통화량이 폭증해 가치가 폭락했습니다. 그래서 인류는 더 안정적인 매개체를 찾았습니다. 바로 금속입니다. 부서지지 않고, 썩지 않으며, 위조하기 어려운 자원. 특히 금과 은은 희소성이 보장돼 '신뢰의 표준'이 되었습니다. 돈이 '소비 가능한 물건'에서 '저장 가능한 자산'으로 진화한 순간입니다. 두 번째 혁명: 금속에서 종이로 하지만 금속에도 한계가 있었습니다. 무거웠고, 운반이 위험했습니다. 부유한 상인일수록 거래가 어려워지는 역설이 발생했습니다. 해결책은 단순했습니다. 금을 안전한 금고에 맡기고, 그 보관증을 주고받자는 발상입니다. 이 보관증이 발전한 것이 바로 지폐입니다. 종이 자체에는 아무 가치가 없습니다. 단지 '이 종이를 가져오면 금으로 바꿔주겠다'는 약속이 가치를 만들었을 뿐입니다. 이후 금본위제가 폐지되고 종이돈은 더 이상 금과 연결되지 않게 되었지만, '국가의 보증'이라는 새로운 신뢰가 그 자리를 대체했습니다. 우리가 만 원짜리 지폐를 만 원으로 받아들이는 이유는, 국가와 중앙은행, 법정통화 제도에 대한 사회적 신뢰가 작동하기 때문입니다. 돈이 '물질'에서 '약속'으로, '실체'에서 '신뢰'로 진화한 순간입니다. 그리고 지금, 세 번째 혁명: 종이에서 코드로 여기까지가 우리가 학교에서 배운 이야기입니다. 그런데 한 가지 이상한 점이 있습니다. 왜 우리의 돈은 여전히 느릴까요?생각해보십시오. 이메일 한 통은 지구 반대편에 1초 만에 도착합니다. 영상 통화로 뉴욕의 친구와 실시간으로 대화합니다. 그런데 그 친구에게 1,000달러를 송금하면? 며칠이 걸리고, 수만 원의 수수료가 빠져나가며, 주말이나 공휴일이면 처리조차 되지 않습니다. 정보는 빛의 속도로 움직이는데, 가치는 여전히 마차의 속도로 움직입니다. 이것은 우연이 아닙니다. 현재의 금융 시스템이 인터넷의 속도에 맞춰 설계되지 않았기 때문입니다. 은행 송금이 느린 이유는 단순합니다. A 은행이 B 은행에게 '이 손님이 100만 원을 보냈다고 장부에 적어둬라'라는 메시지를 보내면, B 은행은 그것을 받아 자기 장부에 옮겨 적습니다. 그리고 며칠 뒤 두 은행은 모여 서로의 장부를 맞춰봅니다. 이 과정에 사람이 개입하고, 영업일이라는 시간 제약이 걸리며, 중간 다리를 거칠 때마다 통행세가 떼입니다. 돈이 움직이는 것이 아니라, '돈이 움직였다는 편지'가 움직이고 있는 것입니다. 토스나 페이팔이 1분 만에 송금되는 것처럼 보이는 이유도 이 때문입니다. 사용자 화면(UI)에서는 빨라 보이지만, 실제 은행 간 정산은 여전히 며칠 뒤에야 마무리됩니다. 우리가 보는 속도와 돈이 실제로 이동하는 속도 사이에는 거대한 간극이 있습니다. 이 간극이 만들어내는 비용은 상상을 초월합니다. 전 세계 국경 간 결제 시장은 2025년 기준 약 250조 달러(약 33경 원) 규모입니다. 그런데 이 거대한 돈이 이동하는 데 평균 6.2%의 수수료가 발생합니다. 매년 약 15조 달러가 중개 수수료와 환전 비용으로 공중분해되고 있는 셈입니다. 한국 은행에서 미국 중개 은행으로, 그리고 다시 현지 은행을 거치는 '릴레이 경주'에서 매번 통행세를 떼이기 때문입니다. 세 번째 혁명은 바로 이 지점을 겨냥합니다. 돈 자체가 코드가 되어, 정보처럼 빠르게 이동하는 세상. 우리는 이것을 '머니 (화폐) 3.0' 이라고 부릅니다. 디지털 경제의 삼각축: 금, 석유, 그리고 현금 블록체인 기술이 등장한 지 17년이 지났습니다. 그동안 수많은 코인이 생겨났고 또 사라졌습니다. 우여곡절을 겪고 마지막까지 살아남은 자산의 역할은 결국 세 가지로 정리됩니다. 비트코인(BTC)은 디지털 금입니다. 무겁고 전송이 느리지만, 가장 안전한 가치 저장 수단입니다. 사람들이 금을 쪼개서 커피를 사 마시지 않듯, 비트코인도 금고에 넣어두는 자산입니다. 이더리움(ETH)은 디지털 석유입니다. 거대한 블록체인 컴퓨터를 돌리는 연료입니다. 스마트 컨트랙트라는 자동화 엔진을 가동하려면 반드시 필요한 자원입니다. 그리고 스테이블코인은 디지털 현금입니다. 금이나 석유로 월급을 주거나 마트에서 결제하는 사람은 없습니다. 우리에게는 가치가 변하지 않는, 즉시 교환 가능한 '화폐'가 필요합니다. 이것이 바로 스테이블코인입니다. 스테이블코인은 1코인이 1달러에 가깝게 유지되도록 설계된 디지털 현금입니다. 과거의 금융은 금(가치 저장) → 달러(결제) → 은행(유통)이라는 세 단계로 분리돼 있었습니다. 블록체인 금융은 이 모든 과정을 하나의 인프라 위로 통합합니다. 금(비트코인)을 담보로 맡기고, 현금(스테이블코인)을 대출받아, 전 세계 어디로든 즉시 보내는 세상. 그 혈관을 흐르는 혈액이 바로 스테이블코인입니다. 크리스마스이브에 도착하지 못한 송금 이제 이론은 충분합니다. 실제로 무엇이 달라지는지, 두 사람의 이야기로 살펴보겠습니다. 서울에 사는 김철수 씨가 미국 유학 중인 딸에게 크리스마스 용돈으로 1,000달러를 보내려고 합니다. 12월 25일 아침, 은행 앱을 켭니다.'공휴일 거래 불가.' 내일 보낸다 해도 미국의 연말 휴가 시즌과 겹쳐, 딸은 1월 2일이나 되어야 돈을 받을 수 있습니다. 수수료는 4만 원. 결국 그 돈은 크리스마스에 도착하지 못했습니다. 같은 시간, 옆집의 이영희 씨는 다른 방식을 택합니다. 채팅창을 열어 딸의 지갑 주소로 1,000 USDC(스테이블코인) 를 전송합니다. 소요 시간 12초, 수수료 800원. 딸은 그 코인으로 크리스마스를 즐기기 위한 케이크를 샀습니다. 같은 1,000달러, 같은 거리, 같은 시각. 그러나 한쪽은 일주일을 기다려야 했고, 다른 한쪽은 12초 만에 케이크를 잘랐습니다. 차이는 단 하나입니다. 한쪽은 영업일이라는 '인간의 시간'에 갇혀 있었고, 다른 한쪽은 24시간 365일(24/365)이라는 '기계의 시간' 위에서 움직였습니다. 돈이 '스스로 일하기' 시작했다 여기서 정말 중요한 변화는 따로 있습니다. 과거의 돈은 정적인 객체였습니다. 지갑에 보관되거나 은행 장부에 숫자로 기록될 뿐, 돈 스스로는 아무 일도 하지 못했습니다. 그러나 오늘날의 돈은 다릅니다. 조건을 이해하고, 명령을 실행하며, 정산과 분배를 자동으로 수행합니다. 프로그래밍 가능한 시스템입니다. 프리랜서 개발자 지은 씨의 사례가 이를 잘 보여줍니다. 그녀는 미국 샌프란시스코 클라이언트의 프로젝트에 최종 코드를 납품했습니다. 과거라면 어땠을까요? 금요일 오후에 일을 마쳐도 미국 경리 담당자가 출근하는 월요일까지 기다려야 했습니다. 송금 버튼을 눌러도 SWIFT 망을 타고 중개 은행을 거쳐 한국의 주거래 은행에 도착하기까지 3일이 더 걸렸습니다. 수수료 50달러는 덤이었습니다. 그런데 스테이블코인 세상에서는 이렇게 됩니다. 코드를 커밋한 지 15초 후, 스마트폰에 알림이 옵니다. “2,500 USDC가 입금되었습니다. 수수료 $0.01.”"입금된 자산이 'RWA 머니마켓'으로 자동 예치되어 연 4.8% 이자 수익이 발생하기 시작합니다." 월급을 받자마자, 돈이 스스로 일하기 시작하는 것입니다. 일과 보상 사이의 시차는 사라졌고, 보상과 투자 사이의 시차도 사라졌습니다. 이것은 단순한 '빠른 송금'이 아닙니다. 돈의 물리적 성질이 근본적으로 바뀌었다는 뜻입니다. 책에서는 이 변화를 '돈의 물리학이 바뀌었다' 고 표현합니다. 곧 도착할 미래: AI도 돈을 씁니다 여기서 한 걸음 더 나아가 봅시다. 머지않아 돈을 쓰는 주체가 인간만이 아니게 됩니다.지금의 AI 비서에게는 결정적인 결함이 하나 있습니다. 시를 쓰고 코드를 짜는 천재이지만, 마지막 순간에 반드시 멈춥니다. "최저가 항공권을 찾았습니다. 결제하려면 신용카드 번호를 직접 입력해 주세요." 왜일까요? 기존 금융이 인간만을 위해 설계됐기 때문입니다. 은행은 신분증과 얼굴 (생체정보)을 요구합니다. 법 인격이 없는 AI는 이 관문(KYC)을 통과할 수 없습니다. 결제 마지막 순간에는 OTP 입력이나 지문 인식이 요구됩니다. 완전 자동화를 가로막는 결정적 장애물입니다. 게다가 AI끼리 데이터를 사고팔 때는 0.1원 단위의 거래가 초당 수백 번 일어납니다. 건당 100원씩 수수료를 떼는 신용카드 결제망으로는 감당이 불가능합니다. 하지만 블록체인은 다릅니다. 블록체인은 '사용자가 인간인가'를 묻지 않습니다. 단지 '올바른 키(key)를 가졌는가' 만 확인합니다. AI는 자신만의 지갑을 가지고, 자신만의 신원을 증명하며, 자신만의 거래를 할 수 있습니다. 지갑이 곧 신분증이 되는 셈입니다. 구글의 최신 연구는 한 가지 흥미로운 가설을 제시합니다. 미래의 AGI(범용 인공지능)는 아이언맨의 자비스처럼 모든 것을 다 아는 하나의 거대한 '신'이 아니라, 서로 다른 전문성을 가진 수많은 AI가 협력하고 거래하는 '패치워크(patchwork) 경제 시스템' 이라는 것입니다. 번역 AI, 코딩 AI, 예약 AI가 서로 일을 맡기고 보수를 주고받는 거대한 디지털 도시. 이들이 서로를 믿고 일감을 맡기려면 무엇이 필요할까요? 계약서가 아닙니다. '스마트 컨트랙트(코드)'와 '스테이블코인(즉시 결제)' 입니다. 그래서 비자, 페이팔을 비롯한 글로벌 결제 기업들은 AI 에이전트 시대의 결제 인프라를 준비하고 있고, 구글이 제시한 패치워크 AGI 관점 역시 이런 흐름을 뒷받침합니다. 머지않아 0.1원짜리 데이터 거래가 24시간 흘러 다니는 M2M(Machine-to-Machine) 경제가 우리 곁에 옵니다. 그리고 그 화폐 OS의 역할을 스테이블코인이 맡습니다. 책은 이 변화의 본질을 한 문장으로 정리합니다. “AI를 통제하는 가장 강력한 수단은 전원 코드를 뽑는 게 아니라, 지갑을 압류하는 것입니다.” 그래서, 우리는 무엇을 해야 하는가 이 모든 이야기가 어쩌면 멀게 느껴질지 모릅니다. 하지만 한 가지는 분명합니다. 화폐는 이미 형태를 바꾸고 있고, 이 흐름은 되돌릴 수 없습니다. 비자는 스테이블코인 정산 실험과 확장 과정에서 솔라나를 활용했고, 페이팔은 PYUSD를 발행했으며, 블랙록은 BUIDL이라는 토큰화 펀드를 출시했습니다. JP모건은 자체 결제 네트워크를 운영하고 있습니다. 이들이 스테이블코인을 '실험'이 아니라 '핵심 기술 스택'으로 채택한 이유가 여기에 있습니다. 많은 사람이 '비트코인 가격이 얼마야?'를 묻는 동안, 거대 자본과 기술은 가격표 너머의 인프라 자체를 바꾸고 있었습니다. 조개껍데기를 쓰던 사람이 어느 날 갑자기 금화를 받아들었을 때, 그것을 거부했다면 어떻게 됐을까요? 금화를 쓰던 사람이 어느 날 갑자기 지폐를 받아들었을 때 똑같이 묻습니다. 거부했다면? 역사는 답을 알려줍니다. 지금 우리는 그 갈림길에 다시 서 있습니다. 다행인 것은, 이 변화가 갑작스럽지 않다는 점입니다. 2026년 현재, 뉴욕의 헤지펀드 매니저부터 아프리카의 프리랜서 개발자까지, 이미 수많은 이가 스테이블코인이라는 고속도로 위에서 경제 활동을 영위하고 있습니다. 우리도 그 길 위에 천천히 올라서면 됩니다. 화폐 3.0의 시대는 이제 막 닻을 올렸습니다. 불안해할 필요는 없습니다. 변하지 않는 본질은 하나이기 때문입니다. 돈은 결국 '가치를 전달하는 수단'이며, 기술은 그 수단을 더 빠르고, 투명하고, 공정하게 만들 뿐입니다.위 내용은 『코어 스테이블코인』의 내용을 기반으로 재작성하였습니다.

다양한 기업과 함께 하는 한빛+

한빛+는 콘텐츠부터 교육, 기술까지 다양한 기업과 함께합니다.