Hooks를 통한 강제 자동화, Subagents 활용 패턴, MCP 통합, 실전 레이어링 아키텍처, 팀 협업 워크플로우, 문제 해결 방법을 다룹니다.
Claude Code 완전 정복 가이드 Part 5: 나만의 Plugin Marketplace 만들기 - 팀/조직 확장
Plugin 구조와 plugin.json 작성법, Marketplace 구축 및 GitHub 배포, 팀/조직을 위한 Custom Marketplace 운영 방법을 다룹니다.
Claude Code 완전 정복 가이드 Part 4: Plugins & Marketplace - 재사용 가능한 확장 패키지
Claude Code의 Plugin, Command, Subagent, Hook 개념 비교와 Marketplace 활용법, 커뮤니티 플러그인과 나만의 규칙을 조합하는 3-Layer Stacking 전략을 다룹니다.
Claude Code 완전 정복 가이드 Part 3: Skills 시스템 - 온디맨드 전문가 활용하기
Claude Code의 Skills 시스템을 통한 Progressive Disclosure 개념, Skills vs Subagents 비교, SKILL.md 작성법, 실전 예제를 다룹니다.
Claude Code 완전 정복 가이드 Part 2: CLAUDE.md 최적화 - 비대해지는 것을 막아라
CLAUDE.md가 비대해질 때 발생하는 LLM 지시 따르기 한계, 다이어트 전략, 계층적 구조 활용법, 지시 강조 기법을 다룹니다.
Claude Code 완전 정복 가이드 Part 1: CLAUDE.md 기초 - 첫 발을 내딛다
Claude Code의 Agentic Coding 개념과 CLAUDE.md 파일의 역할, 계층적 구조, 작성 방법을 다룹니다. Java/Kotlin, Go 프로젝트용 실전 템플릿도 포함되어 있습니다.
Claude Code 완전 정복 가이드 Part 0: Overview
이 가이드는 Claude Code 초보 사용자가 CLAUDE.md 파일 하나 만드는 것에서 시작해서, Skills와 Plugins를 활용한 고급 워크플로우까지 단계별로 성장할 수 있도록 구성되어 있습니다.
Java: JEP 444, 485, 506, 519 설명
JEP 444, 485, 506, 519 에 대한 설명과 예제코드를 담았습니다.
AI-Native 아키텍처: Java 25와 Spring Boot 4.0 시대의 에이전트 중심 개발 패러다임
이 글은 Google Gemini Pro Deep Research 을 이용해 초안이 작성되었으며, 이후 퇴고를 거쳤습니다.
서론: 소프트웨어 개발의 새로운 지평
2026년을 맞이하며 엔터프라이즈 소프트웨어 개발 생태계는 전례 없는 전환점을 맞이하고 있습니다. 인공지능(AI), 특히 대규모 언어 모델(LLM)이 단순한 코딩 보조 도구를 넘어 자율적으로 소프트웨어를 설계, 구현, 수정하는 ‘에이전트(Agent)‘로 진화함에 따라, 우리가 코드를 작성하는 방식과 시스템을 아키텍처링하는 원칙 자체가 근본적으로 재평가되고 있습니다. 과거 10년이 마이크로서비스와 클라우드 네이티브의 시대였다면, 향후 10년은 인간 개발자와 AI 에이전트가 공존하며 협업하는 ‘AI-Native’ 시대가 될 것입니다.
Java to Go: #5. 프로젝트 구조와 생태계
지금까지 Go의 철학, 문법, 에러 처리, 동시성을 살펴봤다. 이제 실제 프로젝트를 시작하는 데 필요한 것들을 다룬다. Maven/Gradle에서 Go Modules로, JUnit에서 testing 패키지로, Spring에서 Go 라이브러리 조합으로 전환하는 방법을 알아보자.
Java to Go: #4. 동시성: Goroutine과 Channel
Go의 동시성 모델은 Java와 근본적으로 다르다. Thread, synchronized, ExecutorService에 익숙한 개발자라면 처음엔 낯설겠지만, Go의 방식이 얼마나 우아한지 금방 알게 될 것이다. “공유 메모리로 통신하지 말고, 통신으로 메모리를 공유하라"는 Go의 철학을 이해해보자.
Java to Go: #3. 에러 처리와 Null 안전성
Java 개발자가 Go를 배울 때 가장 큰 패러다임 전환이 필요한 부분이 에러 처리다. try-catch에 익숙한 우리에게 if err != nil의 반복은 처음엔 원시적으로 느껴진다. 하지만 이 방식에는 명확한 철학이 있다. 이번 편에서 그 철학을 이해하고, Go 방식의 에러 처리에 익숙해져 보자.
Java to Go: #2. 문법 전환 가이드: Java 코드를 Go로 옮기기
Part 1에서 Go의 철학과 언제 Go를 선택해야 하는지 살펴봤다. 이제 실제 코드 레벨에서 Java와 Go가 어떻게 다른지 1:1로 비교해보자. Java 문법에 익숙한 개발자가 Go 코드를 읽고 쓸 수 있도록 핵심 차이점을 정리한다.
Java to Go: #1. Go 첫인상: 철학과 패러다임의 차이
Java를 수년간 써온 개발자가 Go를 처음 접하면 당혹스럽다. “왜 이렇게 만들었지?“라는 생각이 끊이지 않는다. 이 글에서는 Go의 설계 철학을 이해하고, Java에서 Go로의 전환이 언제 적절한지 판단할 수 있는 기준을 제시한다.
Go to Rust: #10. 프로젝트 관리와 실전 패턴
이 마지막 섹션에서는 실제 Rust 프로젝트를 구성하고 관리하는 방법을 학습합니다. Cargo 심화, 모듈 시스템, 테스트, 그리고 Go 코드를 Rust로 포팅할 때 유용한 패턴들을 다룹니다.
Go to Rust: #9. 비동기 프로그래밍
Rust의 async/await 는 Go의 goroutine과 근본적으로 다른 접근 방식입니다. Go는 런타임이 모든 것을 관리하지만, Rust는 명시적인 비동기 모델을 사용합니다. 이 섹션에서는 Rust의 비동기 생태계와 Tokio 런타임을 학습합니다.
Go to Rust: #8. 동시성 프로그래밍
Rust의 “Fearless Concurrency” 는 컴파일 타임에 데이터 레이스를 방지합니다. Go의 고루틴과 채널에 익숙하다면, Rust의 동시성 모델이 어떻게 다른지 이해하는 것이 중요합니다.
Go to Rust: #7. 컬렉션과 이터레이터
Rust의 컬렉션은 Go와 유사한 기능을 제공하지만, 소유권 시스템과 결합되어 더 안전합니다. 특히 이터레이터 시스템은 Go의 range 보다 훨씬 강력하며, 함수형 프로그래밍 스타일을 지원합니다.
Go to Rust: #6. 에러 처리
Rust의 에러 처리는 Go와 철학적으로 유사합니다. 두 언어 모두 예외(exception)를 사용하지 않고 명시적인 에러 반환을 선호합니다. 하지만 Rust는 타입 시스템을 통해 에러 처리를 강제하여, Go에서 흔히 발생하는 “에러 무시” 문제를 원천 차단합니다.
Go to Rust: #5. 트레이트와 제네릭
트레이트(Trait)는 Rust의 다형성 메커니즘입니다. Go의 인터페이스와 비슷한 역할을 하지만, 구현 방식과 기능에서 큰 차이가 있습니다. 이 섹션에서는 트레이트와 제네릭을 Go와 비교하며 깊이 있게 학습합니다.