apiece
@apiece
受講生
588
受講レビュー
27
講義評価
5.0
카카오, SK를 거쳐 개발자로 일하며
실제 서비스 환경에서 다양한 백엔드 시스템을 설계하고 운영해왔습니다.
그 간 겪었던 시행착오와 고민들이
수강생 여러분의 시간과 선택을 조금이라도 아껴줄 수 있기를 바라는 마음으로
지식공유 콘텐츠를 만들고 있습니다.
콘텐츠에 대한 의견이나 개선점이 있다면
아래 메일로 언제든 편하게 말씀해주세요.
여러분의 솔직한 피드백을 기다리고 있습니다. 감사합니다.
apiece.dev.ai@gmail.com
講義
受講レビュー
- 4週間完成 バックエンド設計チャレンジ (SNS Springboot, AIエージェント)
- AIを扱うバックエンド設計の基本 - SpringBoot SNS編
- 4週間完成 バックエンド設計チャレンジ (SNS Springboot, AIエージェント)
- AIを扱うバックエンド設計の基本 - SpringBoot SNS編
- AIを扱うバックエンド設計の基本 - SpringBoot SNS編
投稿
Q&A
application.yaml에서 enabled: true 인식 안됨
안녕하세요! 질문자님 그리고, 배상진님 감사합니다.저도 Spring Boot 4.0.0 에서 동일한 현상을 경험했습니다.spring.h2.console.enabled에 노란 밑줄이 뜨고 인식되지 않는 이유는, Spring Boot 4.0부터 자동 설정(auto-configuration)이 모듈별로 분리되면서 H2 Console 관련 설정이 별도 모듈로 빠졌기 때문입니다.스프링부트 기존(3.x)에는 runtimeOnly("com.h2database:h2") 의존성만 추가하면 H2 Console이 자동 설정되었지만, 4.0부터는 implementation("org.springframework.boot:spring-boot-h2console") 모듈을 명시적으로 추가해야 합니다. build.gradle.ktsimplementation("org.springframework.boot:spring-boot-h2console") 이 의존성을 추가하면 spring.h2.console.enabled 속성이 정상 인식되고, /h2-console 경로로 접속할 수 있습니다.runtimeOnly("com.h2database:h2") 는 위 의존성안에 있기 때문에 별도 추가하지 않으셔도 됩니다. 공식 문서 참고: https://docs.spring.io/spring-boot/reference/data/sql.html#data.sql.h2-web-console 질문자분 그리고, 관심을 가지고 추가 답변해주신분 모두 감사드립니다!
- 2
- 4
- 51
Q&A
application.yaml에서 enabled: true 인식 안됨
안녕하세요! enabled: true 자체는 Spring Boot에서 정상적으로 인식되는 설정이라 문법 문제일 가능성은 낮아 보입니다. 보통 IDE에서 Spring 설정 메타데이터를 제대로 인식하지 못할 때 노란 밑줄이 표시되는 경우가 있습니다.혹시 h2 의존성이 build.gradle에 추가되었는지 확인부탁드립니다.그리고 Gradle 리프레시를 하거나 IntelliJ에서 캐시 재빌드(Invalidate Caches / Restart)를 한 번 시도해 보시면 좋을 것 같습니다. 그래도 해결되지 않는다면 사용 중인 Java 버전, Spring Boot 버전, 그리고 현재 개발 환경을 함께 알려주시면 동일한 환경으로 직접 테스트해보겠습니다.(제 환경에서 다시 실행해보았는데 동일한 설정으로 정상 동작하는 것을 확인했습니다.) 감사합니다.
- 2
- 4
- 51
Q&A
질문 드립니다!
안녕하세요 안재윤님! '섹션 1. 강의 소개 > 3. 강의 자료'에서강의자료 보시면, PDF 로 제공되고 있으니 다운로드해서 사용하시면 좋을 것 같습니다. 감사합니다.
- 0
- 1
- 45
Q&A
프론트 API 작업
안녕하세요. asdfasdf님!강의 잘 들어주셔서 감사합니다.기존 UI에 API를 연결하는 작업을 조금 더 수월하게 진행하려면, API 로직을 React 컴포넌트에 직접 넣기보다 커스텀 훅으로 분리해서 “API → 훅 → UI” 구조로 가져가는 것이 좋습니다. 이렇게 하면 UI는 데이터 표현에만 집중할 수 있어 유지보수가 훨씬 쉬워집니다. 그래서 저 또한 프론트를 다룰 때 hook 에 API 연동에 대한 책임을 부여하는 구조를 적극적으로 사용했습니다.위 처럼 구조 설계를 하셨다면, 구현은 AI 에게 맡기면 됩니다.예를 들어,project/ ㄴ frontend/ ㄴ backend/형태로 준비된 상황에서 project/ 경로에 진입하셔서 claude code 를 여시고, backend API 를 읽고, 이를 기반으로 fronted 에 API 연동을 해달라고 요청하시면 수월하게 하실 수 있습니다. 자세한 구조를 참고하고 싶으시면 레포지토리에서 대략적인 구조를 한번 참고해주세요.https://github.com/apieceofcoding/springboot-sns-sample-front/tree/main/hooks참고로 여기는 추가로 react-query 를 적용해서 프론트에서 API 를 연동하여 뷰를 보여줄 때 로딩 상태, 에러 처리, 중복 요청 방지, 캐싱, 데이터 최신화 같은 부분들을 일관되도록 관리하게끔 했습니다. (이 부분은 강의 외 내용으로 강의에선 다루지 않는 내용이지만, 위 코드에 구현되어 있어 참고차 말씀드립니다.) 감사합니다.
- 1
- 2
- 48
Q&A
영상 안보임
안녕하세요 Nuri Park 님 맥북인데 미러링시 영상이 안보이신다면 에어플레이 / HDMI 연결 이슈인 경우가 많습니다.혹은 간혹 미러링 상태에서 검은화면으로 나올때도 있어서시스템 설정 > 디스플레이에서 ‘미러링’이 아닌 ‘확장 디스플레이’ 로 설정 후 다시 재생해보세요.노트북을 메인디스플레이로하고, 다른 모니터리를 확장 디스플레이로 하시면 됩니다. 혹시 이런 문제가 아니라 제 강의 자체나 특정 영상이 문제가 있다면 말씀해주세요.
- 0
- 1
- 59
Q&A
중간 결과물을 다운 받을 수 있는 곳이 있나요?
안녕하세요, Sec님 현재는 Github 에 브랜치로 관리되고 있습니다.최종버전: (main 브랜치) https://github.com/apieceofcoding/springboot-twitter필요하신부분: (feature/003-docker 브랜치) https://github.com/apieceofcoding/springboot-twitter/tree/feature/003-docker git switch feature/003-docker여기로 이동하셔서 한번 작업 진행해보시면 좋을 것 같습니다. 본 강의는 하나하나 따라해보면서 진행해보는게 목적이어서, 순서대로 차근차근 진행해보시면 좋을것 같습니다. 감사합니다.
- 1
- 2
- 55
Q&A
agents와 commands에 대해 궁금한 점이 있습니다!
안녕하세요 insub2004님!좋은 질문 많이주셨네요.1)Agents와 Commands 는 실제로 클로드 코드 공식 문서에 정리되어있고, 각각 다른 기능입니다.Agents는 독립적인 컨텍스트에서 실행되는 전문가 AI로, 작업이 끝나면 결과만 메인 대화로 반환합니다. 참고: https://docs.anthropic.com/en/docs/claude-code/sub-agentsCommands는 메인 대화 안에서 바로 실행되는 지침이나 템플릿입니다. 참고: https://docs.anthropic.com/en/docs/claude-code/skills(AI 생태계 발전이 빠르다고 느끼는것이, 클로드코드에서 commands 개념을 skills 와 합쳤네요. 하지만 기존 구성은 여전히 똑같이 동작한다고 하니 강의에서 구성한 commands 를 그대로 사용하셔도 됩니다.)쉽게 말해 Agents는 별도의 방에서 따로 일하는 전문가이고, Commands는 지금 대화에서 바로 쓸 수 있도록 미리 구성해 놓은 명령 지침이라고 생각하시면 됩니다.2) 코드 리뷰 에이전트, 테스트 작성 에이전트, 쿼리 작성 에이전트처럼 각각의 페르소나를 가진 독립 객체로 생각하시면 맞습니다. 각 에이전트는 자신만의 시스템 프롬프트, 사용 가능한 도구, 심지어 모델까지 별도로 지정할 수 있습니다. 3)Commands는 Agents와 완전히 독립적인 기능이라 에이전트 없이도 단독으로 사용할 수 있습니다. 4)호출 방식의 차이(자연어 vs /슬래시명령어)도 있지만, 핵심 차이는 실행 환경입니다. Agents는 격리된 공간에서 실행되어 메인 대화 컨텍스트를 소비하지 않고, Commands는 메인 대화 안에서 컨텍스트를 함께 사용하며 실행됩니다. 답변이 도움이 되었으면 좋겠습니다.감사합니다.
- 1
- 2
- 74
Q&A
여러 컨테이너 사용시 사용할 포트 번호는 무엇으로 하면 되나요?
안녕하세요! Sec님 여러 컨테이너를 동시에 사용할 때는 로컬 PC에서 바인딩하는 포트만 서로 다르게 잡아주면 됩니다. 컨테이너 내부에서 MySQL이 사용하는 포트는 모두 3306이어도 전혀 문제 없습니다. -p 로컬포트:컨테이너포트위 규칙을 먼저 인지해주셨다면, 이미 -p 3306:3306으로 실행 중인 컨테이너가 있다면, 다음 컨테이너는 -p 3307:3306, 그다음은 -p 3308:3306처럼 로컬 포트만 바꿔서 실행하시면 됩니다. 이렇게 하면 로컬에서는 3307, 3308로 접속하고, 각 컨테이너 내부에서는 동일하게 3306으로 MySQL이 동작합니다. 컨테이너마다 별도의 네트워크 공간이 있기 때문에같은 포트 번호를 사용해도 다른 컨테이너와 서로 간섭하지 않으며, 실제로 포트 충돌이 발생하는 지점은 컨테이너가 아니라 로컬 PC입니다. 따라서 로컬 포트만 겹치지 않게 설정하면 여러 컨테이너를 동시에 실행할 수 있습니다.답변이 도움되었으면 좋겠습니다. 감사합니다.
- 1
- 1
- 44
Q&A
URL 오타 방지
안녕하세요 Sec님! IntelliJ에서 URL 오타로 인해 API가 정상적으로 동작하지 않았던 상황으로 이해했습니다.이런 경우, 존재하지 않는 API 경로를 호출하면 기본적으로 404 오류가 발생하기 때문에 Postman 등에서 이를 통해 한 번 확인해볼 수 있을 것 같습니다.URL 오타를 줄이는 방법으로는,클래스 레벨에 @RequestMapping("/api/posts") 와 같이 공통 경로를 지정하고,메서드에서는 @GetMapping, @PostMapping 처럼 경로를 비워두거나 /만 사용하는 방식이 도움이 될 수 있습니다.이렇게 하면 URL을 직접 작성해야 하는 부분이 줄어들어, 오타가 발생할 가능성도 함께 낮출 수 있을 것 같습니다.도움이 되셨기를 바라며, 질문 주셔서 감사합니다 🙂
- 1
- 1
- 43
Q&A
.claude 폴더 규칙 생성 방법
안녕하세요 형씌님 좋은 질문 주셔서 감사합니다. 1)"추후 ... 프로젝트 특성에 맞게 커스텀해야 할 것 같다고 생각합니다." 말씀해주신 이 부분 정말 잘 캐치하셨습니다!현재 제공된 .claude 폴더는 도메인 성격, 아키텍처 방식, 팀 규모에 따라 반드시 조정해야 합니다. 예를 들어 도메인 분리 기준, 레이어 구조, 네이밍 규칙, 코드 리뷰에서 꼭 봐야할 점, 보안 규칙 등은 프로젝트마다 달라지기 때문에 이 부분은 프로젝트에 맞게 수정해주는 것이 좋습니다. 2)새 프로젝트에서 .claude 폴더가 없는 상태라면 특히 프로젝트 기획과 규칙이 이미 있다면이를 바탕으로 먼저 정해볼 수 있는 부분은 도메인 개념 정리, 코딩 컨벤션, 구체적인 개발 규칙에 대한 설명입니다. 이를 미리 정의해두면, 추가 기능을 구현할 때 이 부분을 미리 참고하여 전체적으로 통일감있고 예측가능한 코드를 만들 수 있게 될 수 있습니다. (물론 AI 를 계속 사용해보시면 알겠지만, AI agent 가 기존 코드를 읽고 이를 자동으로 분석하여 해당 코드베이스 맞는 구조로 새로운 코드를 알아서 만들어주기도 합니다.)이후 실제 개발을 진행하면 반드시 반복해서 AI 에게 요청하는 부분이 생길겁니다. 따라서 “AI가 자주 헷갈리는 부분”이나 “매번 설명하게 되는 내용”을 발견할 때마다 .claude 문서를 보완해 나가면, 점점 프로젝트에 최적화된 형태로 완성됩니다. 정리하면, .claude 폴더는 한 번 만들어두고 끝나는 설정이 아니라 프로젝트와 함께 성장시키는 문서에 가깝습니다. 처음에는 단순하게 시작하고, 개발을 진행하면서 반복되는 의사결정과 규칙을 하나씩 녹여내는 방식이 가장 현실적이고 효과적인 접근이라고 보시면 좋겠습니다. 감사합니다.
- 1
- 2
- 93




