본문 바로가기

전체 글172

Testcontainers에서 MySQL 사용해보기 (테스트 환경에서 자동으로 MySQL 컨테이너 띄우고 내리기) 이 글은 이전 글 Testcontainers 사용하기까지 에서 이어졌습니다. 잘못된 내용이나 의견 있다면 편하게 말씀해주세요 🙏🏻 Testcontainers 간단 소개 Testcontainers 라이브러리는 도커 컨테이너를 자바 코드로 조작할 수 있다. 다시 말해 자바 코드로 특정 도커 이미지를 실행하고 끌 수 있다. 일반 도커 컨테이너와 마찬가지로 네트워크 통신, 스토리지 조작, 환경변수 설정을 할 수 있다. 이를 DB 테스트 환경에 도입하면 다음과 같다. 인메모리 DB로 테스트하는 것이 아닌 실제 운영 DB와 동일한 환경을 외부 인스턴스에 띄우지 않고 로컬 도커 컨테이너에서 테스트할 때마다 DB 컨테이너를 띄우고 테스트가 끝나면 컨테이너를 내리는 작업을 자동화할 수 있다. CI 환경에 도커만 설치되어.. 2022. 6. 23.
[의사결정] Testcontainers 사용하기까지 잘못된 내용이나 의견 있다면 편하게 말씀해주세요 🙏🏻 사건의 개요 Spring 프로젝트를 했다. DB와 관련된 통합 테스트 작성하였고 모두 통과하였다. 실제 운영 DB 설정을 위해, 테스트 코드에서 작성한 더미 데이터 스크립트(. sql)를 사용하지 못해 재작성하였다. 사건의 원인 테스트 DB 환경 : 인메모리(H2) DB 실제 운영 DB 환경 : MySQL 8.0 테스트와 배포 DB 환경이 달랐다. JPA가 제공해주는 Dialet(방언) 기능을 사용하면 두 DB 간 문제가 없었지만, 방언 기능을 사용하지 않는 퓨어 .sql 스크립트에서 문제가 발생했다. (더미 데이터 .sql 스크립트 재사용 못함) 방언 기능을 사용하지 않는 SQL은 없었지만 만약 있었다고 한다면 문제가 발생할 수 있다.(사실 몇 문제.. 2022. 6. 21.
[프로젝트 회고] : 반찬가게 웹 애플리케이션 (미작성) SideDish (GitHub 저장소) 배운 것 AWS, Spring Data Jdbc, 협업 기간 22.04.18 ~ 22.04.29 (10일) 팀원 @쿠킴(BE), @루이(BE), @쥬(FE), @도리(FE) PR 1 프로젝트 초기 설정, DB, API, 배포 아키텍처 설계 / PR 1 PR 2 특정 음식 타입 조회 기능 / PR 2 PR 3 로그인 제외한 모든 API 기능, 배포 / PR 3 PR 4 배포 자동화 스크립트, Github OAuth 로그인 / PR 4 Reviewer @잭(guswns1659) SideDish 프로젝트는 프론트엔드와 협업하여 반찬가게 쇼필몰 웹 앱을 개발합니다. 프로젝트하며 배운 점 ⛓ Reference 2022.04.18 - [📝 회고/🗓 일일, 주간 회고] - [일.. 2022. 6. 19.
[의사결정, 일일회고] 22.06.15 - "백엔드(Spring) 배포와 아키텍처" 📚 배운 것 백엔드(Spring) 배포 방법 고민 어제는 FE 배포를 하였다. 오늘은 BE를 배포한다. 아직 초기 프로젝트 세팅만 하고 구현 코드는 없지만 CI/CD 자동화 배포를 구축한 뒤 프로젝트 기능이 추가될 때 마다 배포하고 싶어서였다. 제약 사항 - 비용(aws 프리티어) 고민한 배포는 아래와 같다. Case 1 : Docker + Docker hub 도커 이미지를 도커 허브에 올려 사용한다. 이전 프로젝트를 이 방법으로 배포했다. 장점 - 간단하다 - DockerFile만 만들면 끝난다. - Docker 환경이라 배포가 자유롭다. - 이미지 저장소 free 단점 - 무료로 사용하면 배포 이미지가 노출된다. - 단순 EC2 오토 스케일링을 한다면 모든 EC2에 도커가 설치된 뒤 그 위에 올라가.. 2022. 6. 16.
[의사결정, 일일회고] 22.06.14 - "프론트엔드(React) 배포와 아키텍처" 📚 배운 것 프론트엔드(React) 배포 방법 고민 (어제 글을 남겼지만) 코드스쿼드에서의 3주간의 마지막 팀 프로젝트를 시작했다. 이번 프로젝트는 FE(2명)/BE(1명)으로 BE를 담당했다. FE - react / BE - Spring를 사용한다. BE가 FE 웹까지 배포를 담당하기로 했다. React는 SPA(Single Page Application), CSR(Client side rendering)으로 build 하면 정적 파일이 생긴다. 이를 배포하면 되겠다 생각했고 3가지가 떠올랐다. Case 1 : Spring + react 묶어 배포하기 react를 빌드하면 /build 정적 리소스 파일을 spring의 src/main/resources/main/static 에 넣어 배포한다. 장점 한 .. 2022. 6. 15.
GitHub Actions를 활용해 React를 S3, CloudFront를 사용해 배포하기 이 글은 AWS의 S3, CloudFront를 사용해 리액트 프로젝트를 배포한다. 이 과정을 Github Actions를 활용해 자동 배포를 소개하고자 한다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 들어가기에 앞서 배포 방법은 다음과 같다. React 프로젝트의 빌드 결과는 정적 리소스 파일(.html, .js, .css ...)이다. 이를 S3에 올린다. 정적 리소스 파일이기에 S3의 baseURL에 index.html를 연결시켜주면 클라이언트는 baseURL에 들어왔을 때 index.html를 받게 된다. 이때 보통 CSR(클라이언트 사이드 렌더링)로 작동하기에 클라이언트의 브라우저는 S3에 필요한 리소스(. js,. css...)를 요청한다. 마치 nginx가 정적 리소스 전달하는 것처럼 보.. 2022. 6. 14.