일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- CI/CD
- vm
- ORM
- 웹 서버
- 데이터베이스
- mysql
- virtualization
- 컨테이너
- 스프링
- Spring
- 가상화
- spring boot
- spring cloud
- 영속성 컨텍스트
- 도커
- HTTP
- CS
- computer science
- spring batch
- 배포
- 스프링 시큐리티
- Java
- JPA
- 스프링 배치
- 스프링 부트
- 백엔드
- web server
- Container
- Spring Security
- 자바
- Today
- Total
목록배포 (12)
개발 일기

이전 게시글에서 로그 레벨까지 알아봤고 이제 실제 EC2에서 돌아가고 있는 스프링 컨테이너는 로깅이 어려웠기 때문에 로깅을 할 수 있도록 로깅 프레임워크를 적용 후에 컨테이너를 갈아 끼울 예정이다.Logback에 대해Logback을 사용할때 application.yml을 통해서 설정이 가능하지만 디테일한 설정을 하는데에는 한계가 있다. 그래서 logback-spring.xml을 통해 조금 더세부적인 설정이 가능하다. logback-spring.xml / logback-spring.groovy / logback.xml / logback.groovy의 이름을 한 파일을 스캔하고 이를 바탕으로 로그 설정이 적용된다. 이때 logback-spring.xml이 Spring Boot에 특화된 설정 파일이였다. Ap..

공부하게된 계기Docker를 사용하다보니 컨테이너 런타임(Container Runtime)이라는 단어를 종종 듣게 됐다. 도커 관련 개발 블로그를 봐면 종종 컨테이너 런타임이라는 용어를 당연하다는 듯이 쓰는 것을 봤다. 처음에 그냥 뭐 컨테이너가 돌아가고 있는 것이나 컨테이너가 돌아가기 위한 소프트웨어? 환경? 이런 것이라고 대강 이해하고 넘어 갔었는데 Kubernetes에 관한 영상을 봤는데도 쓰는데 뭔가 자세히 한번 짚고 넘어가야겠다는 생각이 들어 정리해보게 됐다.도커 아키텍처(Docker Architecture)전에도 한번 다뤘지만 다른 그림으로 도커의 아키텍처를 다시 보자.도커 클라이언트-서버 아키텍처우선은 이게 전에 봤던 것과 유사하다. 기본적으로 도커는 클라이언트-서버 구조로 동작하는데 우선..

도입한 계기기존에 나는 Spring Boot로 구현한 백엔드 서버를 배포하는 과정은 처음에는 수작업으로 Dockerfile을 작성하고, 빌드한 이미지를 Docker Hub에 업로드한 후 EC2 서버에서 이를 pull하는 방식으로 진행했다. Nginx 역시 config 파일과 Dockerfile을 작성하고 빌드하여 동일한 방식으로 Docker Hub에 푸시하고 EC2에서 pull해오는 과정을 거쳤다. 이러한 과정을 하나하나 수동으로 처리하다 보니, 소스 코드에 수정이 있을 때마다 수정된 버전을 재배포하기 위해 반복적으로 이미지를 삭제하고, 컨테이너를 지우는 작업을 수행해야만 했다. 이렇게 적으면서만 봐도 너무 번거럽고 귀찮은 작업이다.이러한 반복적인 배포 과정을 자동화하기 위해 Jenkins나 GitHub..

이전에 왜 Nginx가 이 세상에 나오게 됐는지 알아봤으니 이제는 Nginx의 기능에 대해 하나씩 알아가볼 예정이다.가장 대표적인 기능이라고 생각드는 리버스 프록시에 대해 먼저 다뤄보고자한다.우선 Proxy Server에 대해 이해하고 Forward Proxy 그리고 Reverse Proxy에 대해서 알아보고자 한다.이때 Reverse Proxy가 Nginx와 같은 웹 서버 역할을 하므로 Reverse Proxy가 가질 수 있는 특징(장점)이 곧 웹 서버인 Nginx가 가질 수 있는 특징(장점)이라고 볼 수 있다.프록시 서버(Proxy Server)우선 '프록시'란? '대리인'을 뜻한다. 뭔가를 대신해준다는 의미인 것 같다.그렇다면 프록시 서버란 무엇일지 생각해보면 대신 처리해주는 서버 라고 생각해볼 수..

공부하게 된 계기나의 블로그 초반 게시글 중 하나인 [WEB] 웹 어플리케이션 서버(WAS)와 웹 서버 비교에서 다뤘던 웹서버에 대해서 알아볼 예정이다. 한창 Docker, CI/CD 등 배포 쪽을 공부하면서 다른 사람들의 인프라 아키텍처 같은 것을 보면서 어떤 방법으로 어떤 구조로 배포를 했는지 보면 많은 사람들이 NGINX를 웹서버로 둔 것을 확인할 수 있었다. 사실 내 배포를 보면 그냥 프론트 따로 백 따로 왜 NGINX가 필요한지 지금도 충분히 잘 돌아가서 잘 모르겠지만 많은 사람들이 쓰는 데에는 이유가 있지 않을 까 싶어서 공부해보고 내 EC2에도 설치하여 적용해보기로 했다. NGINX전에는?NGINX도 웹 서버이지만 그만큼 또 유명한 웹서버로는 흔히들 아는 Apache HTTP Server가 ..

왜 공부하게 됐나?최근 단순히 express, spring boot 프레임워크를 통해 로컬에서 개발하면서 배포 인프라 공부에 항상 부족함을 느꼈다. 어쨋든 로컬에서만 돌려서는 실제 서비스를 할 수가 없는데 지금 당장 프레임워크만 다뤄서 될게 아니라 도커, 쿠버네티스, 깃 액션 등 CI/CD에 대한 나의 능력도 키워야 되겠다는 생각이 들었다. 그래서 Docker부터 공부하기 시작했고 EC2에 Git Actions을 통해 CI/CD 자동화에 성공했다고 생각했다. 근데 평소에 단순히 CI/CD가 통틀어 배포겠거니 생각하고 썼는데 내가 좀 잘 못 생각하고 쓰고 있었던 것 같다. 그래서 우선 CI/CD가 무엇인지에 대해 정리해보자 블로그를 쓰게 됐다.배경개발을 해보니 실제 서비스를 배포할 때 까지는 소스 코드 개..

도커 파일 작성동기들과 주식 관련 솔루션 서비스를 제작하면서 스프링 부트로 백엔드를 맡아 하는 과정에 Dockerfile을 직접 작성해봤다.FROM에서 베이스 이미지를 OpenJDK 21로 지정했습니다. 제 Spring Boot가 Java21 버전을 사용하고있어서 선택했고 ARG는 Docker 빌드 시 사용할 변수(JAR_FILE)를 정의한다. 이 변수는 빌드된 JAR 파일의 경로를 가리키며 앞에서 정의한 ARG의 JAR_FILE 변수를 사용하여 JAR 파일을 이미지 안으로 'app.jar'라는 이름으로 복사해 온다..env 파일은 OPEN AI의 Assistant API를 사용할 때 필요한 OPENAI API 키를 저장해뒀다. build 시에 포함되지 않아 따로 COPY를 했다. 마지막으로 ENTRY..
dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일로 여러 키워드를 사용하여 dockerfile을 작성하여 빌드를 보다 쉽게 수행할 수있다. Dockerfile InstructionFROMFrom 키워드를 사용하여 베이스가 되는 이미지를 지정한다.주로 OS 이미지나 런타임 이미지를 지정한다.ex) 스프링 프로젝트의 경우 자바 런타임 RUN이미지를 빌드할 때 사용하는 커맨드를 설정할 때 사용 ADD이미지에 호스트 파일이나 폴더를 추가하기 위해 사용만약 이미지에 복사하려는 디렉토리가 존재하지 않으면 docker가 자동 생성 COPY호스트 환경의 파일이나 폴더를 이미지 안으로 복사하기 위해 사용'ADD'와 동일하게 동작하지만 가장 확실한ㄴ 차이점은 URL을 지정하거나, 압축파일을 자동으로 풀..