Skip to content
@Iduk-Baduk

이득바득

2조

팀 이득바득

😊 팀원

송준경 (PM) 김세은 (PL) 정재환 (DevOps) 이우창 (DBA) 한상희 (형상관리자)

👨‍💻객원 멤버: 박근석 (기술 고문)

🤝🏻 팀 규칙

팀 규칙

1. 결석 및 지각 규칙

  • 사전 공유 필수 (최소 1시간 전)
    • Discord 일정-공유 채널에 올려주세요!
  • 2회 무단 결석 시 팀 회의에서 논의
    • 사전 공유 없이 10분 이상 지각 (무단 경고 1회 / 2회시 결석판정)

2. 분쟁 및 갈등 발생 시 중재 절차

  • 팀장과 1:1 면담 → 팀장 중재 → 팀 회의에서 공유 및 조정
    • 서로의 입장이 다를 수 있습니다. 감정을 내려놓고 이성적으로 대화합시다.
😊 실수가 많을 수 밖에 없습니다! 편안한 분위기 속에서 공유해주세요 :)

3. 회의 관련

3-1. 월요일 미팅 (09시 15분)

  • 주간 할 일 및 진행도 공유
  • 그 외 간단한 안건들 공유
  • 월요일 미팅 이후 데일리 스크럼 진행

3-2. 금요일 미팅 (16시 30분)

  • 주간 한 일 정리
  • 한 주간 피드백

3-3. 긴급 회의

회의 안건은 #회의-안건 채널에 올려주시면 감사하겠습니다!

4. 기록 관련

4-1. 데일리 스크럼 (일일)

😊 수업 시작 후 소회의실에서 5분~10분간 데일리 스크럼 진행

스크럼 내용

  • 어제 한 일
  • 오늘 할 일
  • 막힌 점 / 도움이 필요한 점

간단히 브리핑 이후 Github dailyScrum Repo - Issues 에 업로드

하루 태스크 완료 시 Close Issue , Discussion에는 팀장이 정리해서 올립니다.

4-2. 주간 스크럼 (주간)

일일 스크럼을 통해 진행된 내용들을 정리하여 Notion 주간 스크럼 채널에 올립니다.

기록자 → 팀장

4-3. 에러 다이어리 (버그리포트)

프로젝트 진행 중 겪은 오류나 예외 상황을 기록합니다.

해결 과정과 깨달은 점을 정리하여 discord 404-not-found 채널에 올립니다.

4-4. TIL 기록

주에 최소 2개씩 TIL 기록을 discord til 채팅 채널에 공유해주시길 바랍니다! 우리의 학습을 위해 꾸준히 공유해주시면 감사하겠습니다.

5. 건의사항

프로젝트 기간 도중 불편한 점, 개선해야 할 점, 건의할 사항이 있는 경우 discord #건의사항 채널에 올려주시면 확인 후 반영 후 개선하겠습니다.

개인간의 건의사항이나 불편한 점은 팀장에게 DM 주시기 바랍니다.

6. Reward

주간 TIL 및 에러다이어리 MVP에게는 소정의 기프티콘을 지급해드릴 예정입니다! (금요일 주간미팅에서 선정)

6-1. 주간 MVP 선정 기준

  • 에러 다이어리 공유 2건 이상
  • TIL 2건 이상
  • 팀원 피드백 기여도
  • PR 참여/리뷰 성실도

6-2. Reward 선택

1주차 - 맘스터치 싸이버거 세트

7. 역할 및 협업 전략

7-1. 팀원 역할 분담표

역할 Main 담당자 Sub 담당자 주요 책임
🧭 PM (Project Manager) 송준경 - 프로젝트 일정 관리, 회의 운영, 산출물 정리 및 제출
💡 PL (Project Leader) 김세은 정재환 기술 방향성 설정, 개발 일정 조율, 기술 이슈 판단
🛢️ DBA (Database Admin) 이우창 한상희 DB 모델링, ERD 설계, 트랜잭션 및 쿼리 최적화
⚙️ DevOps 정재환 송준경 CI/CD 구축, Docker 환경 설정, 배포 및 운영 자동화
🧬 형상관리자 (Git 전략 운영) 한상희 이우창 브랜치 전략 수립, PR/merge 관리, Git 커밋 로그 정리

7-2. 역할 간 협업 흐름

  • PM ↔ 전원: 회의, 일정, 데일리/주간 스크럼 등 전반 관리 및 지원
  • PL ↔ DevOps/DBA: 기술 방향성에 따른 구조 조정, 배포 설계, 성능 문제 조율
  • DevOps ↔ 형상관리자: 배포 시점 조율, 브랜치 머지 순서 정리
  • DBA ↔ DevOps: 배포 시 DB 마이그레이션 및 데이터 연동 관련 협업

7-3. 역할별 산출물 책임

역할 산출물
PM 회의록, 진행 일정표, 최종 발표자료 초안
PL 기술 설계 요약, 리팩토링 제안서, 오류 분석 정리
DBA ERD, DB 스키마 문서, 주요 쿼리 설명
DevOps CI/CD 구성 문서, Dockerfile, 배포 가이드
형상관리자 브랜치 전략 문서, PR 흐름 정리, 커밋 로그 요약

7-4. 리스크 대응 및 역할 조정 규칙

  • 역할 담당자가 일정 불참 시 → Sub가 자동 대행
  • 병목 또는 과중 발생 시 → PM이 팀원 간 업무 재분배
  • 기술 난이도 높거나 병렬 진행 어려운 작업 → PL이 우선 도맡아 해결 후 공유
  • 역할 갈등 또는 이견 발생 시 → PM이 중재하여 합의안 도출

7-5. 역할 순환 및 성장 전략

  • 역할은 초기에는 지정된 구조로 운영되며, 스프린트 2회차 이후에는 팀원 희망에 따라 순환 또는 교체 가능합니다.
  • 역할 변경을 통해 각자 자신의 관심 분야 또는 약점 보완 가능성 확보를 목표로 합니다.
  • 역할 순환 시, 이전 역할에서 작성한 산출물/운영 노하우는 반드시 문서화하여 다음 담당자에게 인수인계합니다.

📖 팀 컨벤션

팀 컨벤션

1. 코딩 컨벤션 (Java + Spring 기준)

항목 컨벤션 예시
클래스명 PascalCase UserController, OrderService
메서드명 camelCase (동사 시작) getUserInfo(), saveOrder()
변수명 camelCase userName, orderList
상수명 UPPER_SNAKE_CASE MAX_RETRY_COUNT
패키지명 소문자, 생략 없는 복합어 연결 com.teamname.delivery.order
중괄호 위치 같은 줄에 열고 블록 단위 줄 바꿈 public void foo() {}
공백 연산자, 콤마 뒤 공백 if (a == b)
주석 JavaDoc: Public 클래스/메서드에 작성 / 내부는 // /** 설명 */

의미 있는 공개 메서드에 JavaDoc 주석 필수, 내부 로직은 선택적으로 작성

1-1. 디렉토리 구조 (DDD Lite + 기능 중심)

src/main/java/com/teamname/project
├── global          // 공통 설정, 예외 처리
├── user
│   ├── controller
│   ├── service
│   ├── repository
│   ├── domain
│   └── dto
└── order
    ├── controller
    └── ...

2. 테스트 컨벤션

😊전제: 빠른 개발 상황에서는 테스트에 우선순위 부여

💡 전략 요약

  • "테스트 범위는 좁게, 효과는 크게"
  • 서비스 계층 중심 + 핵심 유즈케이스 우선

서비스레이어 단에서 단위 테스트 ← 필수 비즈니스 로직에 대한 단위 테스트를 중심으로 진행 시간 여유 있으면 컨트롤러 단에서 통합 테스트 진행

2-1. 컨트롤러 단 테스트

생략 가능 테스트 권장
단순 라우팅, 파라미터 매핑 복잡한 RequestBody / 인증/인가 / 커스텀 예외

✅ 실무에서도 컨트롤러 테스트는 일부만 작성

2-2. 서비스 계층 테스트

  • 비즈니스 로직 핵심 위치
  • 리팩토링 후 안정성 확보
  • Mock으로 의존성 최소화
@ExtendWith(MockitoExtension.class)
class UserServiceTest {
    @Mock UserRepository userRepository;
    @InjectMocks UserService userService;

    @Test
    void 사용자_조회_성공() {
        User user = new User(1L, "준경");
        given(userRepository.findById(1L)).willReturn(Optional.of(user));
        User result = userService.getUserById(1L);
        assertEquals("준경", result.getName());
    }
}

2-3. 테스트 작성 전략

전략 설명 예시
🎯 핵심 유즈케이스 우선 반드시 작동해야 할 기능 로그인, 결제 등
🧱 서비스 계층 중심 DB 상호작용 포함 영역 Repository는 Mock
⚠️ 에러/예외 처리 잘못된 요청 시 로직 확인 존재하지 않는 ID 등
📦 TLD 허용 테스트 후 보완 가능 // TODO: 명시

2-4. 팀 테스트 규칙

- 서비스 계층 테스트는 필수 (Mock 사용)
- 컨트롤러 테스트는 인증/예외 등 필수 항목만 작성
- 테스트 클래스명: XyzServiceTest
- Given - When - Then 구조 유지
- 미작성 시 TODO 또는 @Disabled 명시

2-5. 테스트 최소 템플릿

@Test
@DisplayName("로그인 성공 시 사용자 정보 반환")
void loginSuccess() {
    // Given
    LoginRequest req = new LoginRequest("id", "pw");
    given(authService.login(req)).willReturn(token);

    // When
    String result = authService.login(req);

    // Then
    assertThat(result).isNotNull();
}

3. 어노테이션 컨벤션

3-1. 클래스 단위

용도 어노테이션 주의사항
Controller @RestController @Controller + @ResponseBody 간략화
Service @Service 비즈니스 로직 위치
Repository @Repository 예외 변환 포함
Config @Configuration 설정 클래스 전용
기타 빈 @Component 구체 어노테이션 없는 경우만 사용
생성자 주입 @RequiredArgsConstructor Lombok 사용, final 필드만

3-2. 메서드 단위

용도 어노테이션 주의사항
API 경로 @GetMapping 등 명확한 HTTP 메서드 구분
요청 파라미터 @RequestBody 등 생략 금지
권한 처리 @PreAuthorize Security 권한 처리
예외 처리 @RestControllerAdvice 전역 처리 구분 필요
트랜잭션 @Transactional readOnly 분리 명시

3-3. 필드/생성자 단위

어노테이션 용도 주의사항
@Autowired 의존성 주입 생성자 주입 권장
@Value 설정 주입 yml 변수명 명시
Lombok @Builder, @Getter 등 팀 내 일관성 유지 필요

3-4. 어노테이션 사용 원칙

- 모든 클래스에 역할 어노테이션 명시
- 생성자 주입 + Lombok 사용 통일 (@RequiredArgsConstructor)
- REST API 경로는 HTTP 메서드 어노테이션 사용
- 파라미터 어노테이션 생략 금지
- 예외는 @RestControllerAdvice 기반 처리
- @Transactional은 서비스 계층에만 사용 (readOnly 여부 포함)
- Lombok 사용 범위는 사전 합의하여 통일

4. 브랜치 및 PR 규칙

4-1. 브랜치 명명

유형 접두어 예시
기능 feat/ feat/order-api
버그 수정 fix/ fix/order-404-error
문서 docs/ docs/swagger-update
설정 chore/ chore/docker-setup
테스트 test/ test/user-service
리팩토링 refactor/ refactor/user-controller

이슈 번호 연결 예시: feature/#11-order-api

4-2. 머지 규칙

항목 설명
병합 흐름 feature/*devmain
main 직접 머지 금지 dev 통합 후 main반영
PR 리뷰 필수 1명 이상 리뷰 필요
팀장 승인 리뷰 후 팀장 머지, 부재 시 2명 이상 확인
머지 방식 Squash Merge 사용 권장
충돌 발생 작성자가 해결 후 다시 PR
보호 브랜치 main/dev에 Branch Protection 설정

Squash Merge 요약

  • 여러 커밋을 하나로 압축하여 머지
  • 커밋 로그 간결, 리뷰 목적 명확
  • 기능 단위로 revert 가능
- 모든 feature 브랜치는 dev로 Squash Merge
- 커밋 메시지는 기능 단위 요약 + 이슈번호 포함
  예: feat: 로그인 기능 구현 (#5)
- main 브랜치는 dev에서만 머지

5. 커밋 컨벤션 (Semantic Commit)

5-1. 형식: <type>(<scope>): <subject>

scope는 선택, subject는 현재 시제로

5-2. 주요 타입

타입 설명
feat 새로운 기능
fix 버그 수정
docs 문서 수정
style 코드 포맷팅 (기능 변화 없음)
refactor 리팩토링
test 테스트 추가/수정
chore 설정 변경, 빌드 작업 등
feat: 결제 기능 추가
fix(login): 잘못된 비밀번호 처리 로직 수정

5-3. 작성 원칙

  • 한글로 명확히 작성 ("의미 없는 메시지 지양")
  • 현재 시제, 간결하고 목적 명확하게 작성
  • 기능 단위로 커밋 구분

🗂️ Repository

🖥️ Front

💾 Back

Pinned Loading

  1. itseats-server itseats-server Public

    잇츠잇츠 API 서버

    Java

  2. itseats-web-customer itseats-web-customer Public

    잇츠잇츠 고객용 웹 프론트

    JavaScript 1

  3. itseats-web-owner itseats-web-owner Public

    잇츠잇츠 가맹 관리 웹 프론트

    JavaScript 1

  4. itseats-web-rider itseats-web-rider Public

    잇츠잇츠 라이더용 웹 프론트

    JavaScript 1

  5. itseats-dummy-generator itseats-dummy-generator Public

    잇츠잇츠 더미 데이터 생성 코드

    Jupyter Notebook

Repositories

Showing 6 of 6 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…