목차

    불편함을 코드로 지웁니다.

    개발 공부 노트, 개발 도구와 문제를 해결한 과정, AI 프롬프트와 Obsidian 활용법을 정리합니다.

      ⏳ Time Log/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 에러 페이지 구성 방법