본문으로 바로가기
실습에서는?
LinkedInGitHub
WORKSPACE

EXPLORER

157 POSTS
BLOG
면접질문
해야하는 거
AI 시대, 개발자는 사라지는가?
Python Counter, 빈도수를 쉽게 세는 방법
정렬
1. 투 포인터
DFS와 BFS
알고리즘 논리
코딩 테스트 핵심 알고리즘 정리파이썬 딕셔너리와 코딩 테스트 활용
예시로 살펴보는 AXAX 프로젝트, 문제 정의부터 확산까지AX 시대의 가치 정의와 현장 리딩
MSA
1. Singleton PatternSOLID
Kafka의 핵심 설계 원리Kafka 메시징 시스템의 구성과 동작 방식Kafka 기본 개념과 EC2 Docker 구성
쿠버네티스 입문
Modular Monolith1. MonolithMSA, 서비스 분리와 운영의 원리
Socket이란 무엇인가
네크워크 참조 모델
전체 데이터 구조REST API의 개념과 설계 원칙2. Field/ Parameter / Argument/ this
Actuator 란?EntityManagerJPA 연관관계 매핑JPA 트랜잭션(Transaction)입력값 검증Java의 AOP(Aspect Oriented Programming)Async : AsynchronousBeanJPA(Java Persistence API)Proxy 패턴Spring MVCdocker container1. Spirng 필요컴포넌트 스캔
Spring 컨테이너
application.yamlLombok
이번 강의는 무엇을 노리고 있을까?Spring AI를 배우기 전에 정리할 것23
1. 기술 스택
개발 문서를 읽기 위한 핵심 기술 용어
Docker를 이해하기 위한 운영체제 기초
sigterm
6. 설정과 저장소, 앱을 운영할 수 있는 상태로 만들기5. Service와 Ingress, 요청은 어디로 흐를까4. 직접 실험하는 Kubernetes, Pod 복구부터 롤백까지3. kubectl과 Pod, 상태에서 원인을 찾는 법2. 클러스터는 명령을 어떻게 Pod로 바꿀까1. 쿠버네티스, 원하는 상태와 컨테이너 이미지Calico쿠버네티스 입문, 원하는 상태를 유지하는 시스템
Psql JSONB, 행 잠금, 멱등성Psql 함수,프로시져,트리거
머신러닝 입문딥러닝 학습 기본 개념데이터 시각화기초 통계와 ML 파이프라인 연결분석 자동화와 파이프라인 설계
CNN 아키텍처 발전 과정이미지 세그멘테이션 모델과 핵심 개념객체 탐지 모델과 핵심 개념
딥러닝 데이터셋 엔지니어링
딥러닝 학습 문제 진단과 디버깅
도메인 적응 방법현대 LLM 워크플로의 패턴
Transformer에서 LoRA 적용 대상 정하기LoRA (Low-Rank Adaptation)
LLM 양자화와 QLoRA
분산 학습과 MLOps딥러닝 모델 경량화와 추론 최적화딥러닝 기본 학습 테크닉딥러닝 중급 학습 테크닉
Mixture of Experts(MoE) 핵심 개념멀티모달 파운데이션 모델 핵심 개념State Space Model과 MambaTransformer와 Vision Transformer
Latent Space
1Chunking?
DevOps 기초 1편
실습에서는?Agile 개요, 왜 필요한가?
CI/CD 기초 4편: 배포 전략과 운영CI/CD 기초 3편: Jenkins와 Argo CD를 이용한 GitOps 배포CI/CD 기초 2편: Docker 이미지와 배포 파이프라인CI/CD 기초 1편: 개념과 GitHub Actions
OCI: 컨테이너 이미지와 런타임의 공통 표준Docker 기초 13편: Compose Healthcheck와 실전 구성Docker 기초 12편: Compose 네트워크와 VolumeDocker 기초 11편: Compose 명령어와 환경 변수Docker 기초 10편: Compose 기본 구조와 이미지 빌드Docker 기초 9편: Docker 및 Kubernetes 네트워크Docker 기초 8편: 컨테이너 런타임과 격리Docker 기초 7편: 이미지 Layer와 tar 내부 구조Docker 기초 6편: 이미지 Layer와 빌드 최적화Docker 기초 5편: 컨테이너 기본 명령어와 VolumeDocker 기초 4편: 가상화와 컨테이너 이미지 생명주기Docker 기초 3편: CI/CD 연결과 배포 원칙Docker 기초 2편: Layer, Registry, Volume과 NetworkDocker 기초 1편: Dockerfile, Image와 Container
NginxNginx 로드 밸런싱과 HTTPSNginx 리버스 프록시와 Spring Boot 연결Nginx 기초와 동작 구조
05. Pinia 상태 관리: store 설계와 사용법04. Vue 컴포넌트 설계: props, emit, slot과 생명주기03. Vue Composition API 정리02. Vue 기초 문법 점검: JavaScript, 템플릿01. Vue.js 입문: 핵심 구조와 렌더링
Java 심화 Part 3: 함수형 프로그래밍과 LambdaJava 심화 Part 2: AnnotationJava 심화 Part 1: Reflection
Java 기초 Part 5: Stream APIJava 기초 Part 4: 제네릭Java 기초 Part 3: 제어문Java 기초 Part 2: 주석과 JavadocJava 기초 Part 1: 백엔드 배경과 Java 실행 구조
Java 디버깅 Part 1: 자주 헷갈리는 핵심 개념Java 디버깅 Part 2: VS Code 자동 컴파일과 프로젝트 구조
Java 실행과 JVM Part 3: ClassLoader와 JVM 메모리Java 실행과 JVM Part 2: 메모리와 데이터 흐름Java 실행과 JVM Part 1: Java와 Python 컴파일 비교
Java 객체지향 Part 5: static 메서드와 중첩 클래스Java 객체지향 Part 4: 상속과 인터페이스Java 객체지향 Part 3: 좋은 설계와 OOP 4대 특성Java 객체지향 Part 2: OOP 핵심 문법Java 객체지향 Part 1: 클래스, 객체, 필드와 생성자
Spring 기초 Part 11: Actuator와 애플리케이션 모니터링Spring 기초 Part 10: 비동기 처리와 @AsyncSpring 기초 Part 9: JPA 트랜잭션과 동시성 제어Spring 기초 Part 8: AOP와 공통 관심사 분리Spring 기초 Part 7: Proxy 패턴과 Spring ProxySpring 기초 Part 6: JPA 연관관계 매핑Spring 기초 Part 5: EntityManager와 영속성 컨텍스트Spring 기초 Part 4: JPA, Entity와 RepositorySpring 기초 Part 3: REST API 요청값과 입력값 검증Spring 기초 Part 2: Spring MVC 요청 처리 흐름Spring 기초 Part 1: IoC, Bean, DI와 주요 Annotation
DNS = Domain Name System
Spring Boot, WebSocket, Vue, Docker 로 Raspberry Pi 실시간 모니터링 프로젝트 만들기 - 1편1. Spring Boot 구현
1. GitHub Project 만들기
Python 코드 품질: 디버깅부터 테스트와 자동화까지Python 01. 실행 구조와 실무 기초
sLLM 핵심 기술과 전체 구조제한된 자원에서 sLLM 구축하기
시대 단상에 대한 주저리주저리
WORKSPACE

SEARCH

제목, 카테고리와 태그로 검색하세요.

VERSION CONTROL

SOURCE CONTROL

masterGitHub Pages
저장소 열기
BUILD STATUS

RUN AND DEBUG

게시물은 GitHub Actions에서 검증하고 정적 페이지로 빌드합니다.

Actions 열기
WORKSPACE

MANAGE

홈 열기전체 게시물태그 보기블로그 소개
실습에서는?●
workspace>posts>devops>agile>과제.md
DevOps / Agile2026.08.261 min read0 tags

실습에서는?

MSA는 정답이 아니다.

실습에서는?

문제 정의
    ↓
서비스 기획
    ↓
Sprint로 우선순위 결정
    ↓
API를 연결해 실제 동작 증명
  1. 누구의 문제를 해결하는가?
  2. AI가 그 문제를 어떻게 해결하는가?
  3. 여러 기능 중 무엇을 먼저 만들 것인가?
  4. 그 기능을 어떤 Microservice/API가 담당하는가?
  5. 진짜 호출해서 동작하는가?

하면 안 되는 것

  • Eureka 내부 코드 분석
  • OAuth2 내부 구현 분석
  • JWT 서명 알고리즘 분석
  • JPA Mapping 전체 분석
  • Kafka Producer/Consumer 코드 전체 분석
  • Spring 코드 한 줄씩 읽기
  • 화려한 프론트엔드 디자인

진정으로 해야 하는 것

MSA는 정답이 아니다.

신청 → 이벤트 발생 → 결제 → 상태 변경이라는 결과 흐름

STEP 1. 우리 팀 서비스의 고객을 하나 정하기

Pain Point 정의

이해관계자: 취업 교육을 제공하는 기업

기업은 교육생마다 어떤 강의를 추천해야 하는지 판단하기 어렵다.

교육생의 기존 수강 기록
교육생의 관심 직무
교육생의 학습 수준
    ↓
AI 분석
    ↓
다음 강의 추천

문서에서도 발표의 첫 번째 항목을 이해관계자의 Pain Point, 두 번째를 이를 해결하는 AI Solution

STEP 2. 기존 교육 플랫폼을 우리 도메인으로 치환

  • 강사
  • 과목
  • 수강신청
  • 결제
  • 추천
기존 Template우리 서비스
user구직자
course채용공고
enrollment지원
payment기업의 지원 승인
recommendAI 채용공고 추천

STEP 3. Sprint 1을 딱 하나의 사용자 흐름으로 잡기

Walking Skeleton

사용자 로그인
    ↓
상품 조회
    ↓
상품 선택
    ↓
신청
기능비중
user30%
course30%
payment20%
recommend20%

로그인 → 상품 조회 → 신청이 100% 동작

Sprint 1에서는 회원, 과목, 수강신청으로 최소 기능 MVP를 완성하고 Sprint 2에서 결제와 이벤트 연동을 확장

왜 Sprint를 이렇게 나누는가?

이 기능이 없으면 사용자에게 가치가 전달되지 않는가?

YES라면 Sprint 1.

없어도 일단 서비스가 돌아가면 Sprint 2.

자료에서도 정확히 이 기준을 사용. 회원가입, 상품, 신청 같은 필수 기능은 Sprint 1에 두고, 결제 자동화와 이벤트 연동 같은 확장 기능은 Sprint 2로 미룬다

Sprint 1

  • 로그인
  • 상품 조회
  • 신청

Sprint 2

  • 결제
  • Kafka 이벤트
  • 상태 자동 변경
  • AI 추천

STEP 4. 그다음 Swagger를 본다

우리 Flow에서 어떤 API가 필요한가?

MethodPath역할
POST/users/login로그인
GET/courses상품 조회
POST/enrollments신청
Try it out
    ↓
Request 작성
    ↓
Execute
    ↓
Response 확인
  • 아이디어 확정 및 Domain Mapping
  • 필요한 API만 리스트업
  • Swagger Try it out
  • Frontend 연결
  • Token 연결
  • Sprint 2에서 결제 후 상태 변화 확인

API에서 네가 이해할 수준

POST /api/users/login
{
  "email": "test@test.com",
  "password": "1234"
}
{
  "token": "xxxxx"
}
로그인
    ↓
Token 획득
    ↓
sessionStorage 저장
    ↓
다른 API 호출
    ↓
Authorization: Bearer Token

STEP 5. Frontend에서 실제 API를 연결

[로그인 버튼]
    ↓ fetch
POST /api/users/login
    ↓
Token
    ↓
sessionStorage
    ↓
강의 조회 페이지
    ↓
GET /api/courses

자료에서도 Swagger에서 Method, Path, Request Body, Response를 확인하고 그대로 fetch로 옮기라고 안내

Sprint 1에서 나와야 하는 결과

로그인
    ↓
데이터 조회
    ↓
사용자가 항목 선택
    ↓
신청
    ↓
DB 상태 변경

즉 발표하면서 다음 내용을 보여줄 수 있어야 합니다.

여기 버튼 누르면 이렇게 됩니다.

코드 설명 20분보다 이 데모 30초가 훨씬 중요

Sprint 2에서는 무엇을 추가하는가?

사용자가 신청
    ↓
PENDING
    ↓
결제
    ↓
payment.completed
    ↓
Kafka
    ↓
enrollment-service
    ↓
APPROVED
결제 전: PENDING
    ↓
결제 수행
    ↓
결제 후: COMPLETED

상태가 실제로 바뀌었는가?

최종 결과물 6개

자료에 발표 산출물이 아주 명확하게 적혀 있습니다.

1. Pain Point

  • 누가 무슨 문제를 겪고 있는가?

2. AI Solution

  • AI가 그 문제를 어떻게 해결하는가?

3. Sprint 구분

구분범위
Sprint 1핵심 MVP
Sprint 2확장 기능

그리고 왜 그렇게 나눴는가?

4. Architecture

Client
    ↓
Gateway
    ↓
A Service
    ↓
B Service
    ↓
Kafka
    ↓
C Service

5. API 명세

MethodURL역할
POST/login로그인
GET/courses조회
POST/enrollments신청
POST/payments결제

Request와 Response까지 정리합니다.

6. 동작 Screenshot / Demo

신청 전
    ↓
신청
    ↓
결제
    ↓
상태 변화
    ↓
추천 결과

교수님 문서도 발표 결과물을 정확히 이 여섯 단계로 요구하며, 왜 → 무엇을 → Sprint → Architecture/API → 실제 결과 순서로 논리가 이어져야 한다고 설명합니다.

그래서 내일 실제로 해야 할 순서

  1. 팀 Pain Point 확정
  2. AI가 제공할 가치 한 문장 정의
  3. Domain Mapping 작성
  4. 사용자 End-to-End Scenario 작성
  5. Sprint 1, Sprint 2 분리
  6. 필요 API 3~5개 선정
  7. Swagger Try it out 성공
  8. Frontend와 API 연결
  9. Sprint 1 End-to-End Demo
  10. Payment, Kafka, Recommend 확장
  11. 통합 테스트
  12. Screenshot, Architecture, API 명세 정리

서브노트

구분내용
목표강의 신청 Flow를 구현한다.
시도Swagger에서 API 호출
문제401 Unauthorized 발생
원인Authorization Header에 Token이 없었음
해결Bearer Token 추가
결과신청 성공
이해Gateway를 통해 요청하고, Token을 이용해 인증된 API를 호출한다.

필요 API

POST /login
GET /courses
POST /enrollments
PREVIOUSAgile 개요, 왜 필요한가?NEXTMSA, 서비스 분리와 운영의 원리
DISCUSSION

COMMENTS

GitHub 계정으로 로그인하여 댓글을 남길 수 있습니다. 댓글은 GitHub Discussions에 공개 저장되며, 작성 내용과 GitHub 프로필 정보가 다른 방문자에게 보일 수 있습니다.

GitHub 로그인 후 댓글 쓰기Discussion 열기
DOCUMENT STRUCTURE

이 문서에는 목차가 없습니다.

DOCUMENT INFO
TYPE
Markdown
DATE
2026.08.26
READ
1 min read
WORDS
0
CATEGORY
DevOps / Agile
RELATED DOCUMENTS
Agile 개요, 왜 필요한가?해야하는 거NginxOCI: 컨테이너 이미지와 런타임의 공통 표준Nginx 로드 밸런싱과 HTTPSNginx 리버스 프록시와 Spring Boot 연결
main DevOps / Agile
1 min readUTF-8Markdown
본문 글씨 크기
RECENTLY OPENED1
실습에서는?recently opened