목차

    ⏳ Time Log/1. One Day (Daily · TIL)

    [TIL] Day 58 — AWS Elastic Beanstalk + Docker nginx + DB 리턴 타입 설계 (1/9)

    this.Serena 2026. 6. 8. 19:41

    [TIL] Day 58 — AWS Elastic Beanstalk + Docker nginx + DB 리턴 타입 설계 (1/9)

    날짜: 2026-01-09
    기술 스택: AWS Elastic Beanstalk Docker Spring Boot Thymeleaf


    한 줄 요약: Docker를 활용한 AWS 완전 관리형 서비스 배포 테스트 + DB 작업 시 int vs void 리턴 타입 설계 기준


    AWS Elastic Beanstalk 개요

    Elastic Beanstalk EC2, 로드 밸런서, 오토 스케일링 등 인프라 프로비저닝을 자동화하는
    AWS의 완전 관리형 애플리케이션 배포 서비스
    → 인프라 직접 관리 없이 코드만 올리면 되는 PaaS 구조


    Docker Nginx 기본 실행

    docker run -d -p 80:80 nginx
    옵션 의미
    -d Detached mode — 백그라운드에서 컨테이너 실행
    -p 80:80 호스트:80 → 컨테이너:80 포트 포워딩
    nginx 실행할 Docker 이미지명

    브라우저에서 localhost:80 접속으로 nginx 동작 확인


    DB 작업 리턴 타입 설계 기준 — int vs void

    int 타입 — 성공/실패 검증이 중요한 경우

    // DB에서 영향받은 row 수를 반환 (0이면 없는 데이터)
    int result = memberRepository.deleteMember(memberId);
    if (result == 0) {
        throw new MemberNotFoundException("존재하지 않는 회원입니다");
    }

    적용 시점: 삭제, 수정 등 작업 성공 여부를 반드시 추적해야 하는 로직

    void 타입 — 단순 실행이 목적인 경우

    // 반환값 체크 없이 실행만 시도
    public void deleteAccessLog(long logId) {
        accessLogRepository.delete(logId);
    }

    적용 시점: 실패해도 메인 비즈니스 로직에 큰 영향이 없는 부가 작업 (로그 삭제 등)

    설계 진단 체크포인트

    "이 작업이 실패하면 사용자에게 알림이 가야 하는가?"
    → YES → int / NO → void


    더 알아볼 것

    • Elastic Beanstalk vs EC2 직접 배포 비교 — 언제 어떤 방식을 선택해야 하는가
    • Docker 이미지 생명주기 (pull, run, stop, rm, images)
    • docker run -p 포트 포워딩 원리 이해
    • Spring MyBatis에서 int 리턴값을 활용한 예외 실제 코드 작성 연습
    • Thymeleaf 에러 페이지 구성 방법