[Docker] JIB로 이미지 빌드하기
·
DevOps/Docker
JIB를 사용하여 Docker 이미지를 빌드해 보자📌 서론이전 포스트에서 Dockerfile을 사용하여 Image를 빌드했다.근데 이미지의 용량을 봤는데 400MB가 넘어가는 것을 확인했다. 이런 이미지의 용량을 보고 최적화를 해보고 싶어 졌고 바로 이미지의 용량 최적화 방법을 알아봤다. 열심히 검색하며 알아보던 도중 JIB라는 것이 존재한다는 것을 알게 되었고 바로 적용시켜 봤다.이번 포스트에서는 스프링 부트에서 JIB를 사용하여 Docker 이미지를 빌드하고 DockerHub에 저장해 볼 예정이다. 또한 이 과정을 통해 이미지의 용량이 얼마나 최적화가 되었는지 알아볼 것이다.이전 포스트 확인하기 [Docker] 단일 단계 빌드 vs 다단계 빌드Docker에서 단일 빌드와 다단계 빌드의 차이점을 알아..
[Docker] 단일 단계 빌드 vs 다단계 빌드
·
DevOps/Docker
Docker에서 단일 빌드와 다단계 빌드의 차이점을 알아보자📌 서론사이드 프로젝트를 진행하면서 SpringBoot로 백엔드 서버를 구성했고 K8s를 통해 관리하고 있다. 이때 Spring 프로젝트를 Docker로 빌드하여 그 이미지를 pod에 올려서 배포하고 있는데 이 과정에서 스프링부트를 이미지화시키는 Dockerfile을 작성하면서 어떻게 작성해야 Dockerfile을 잘 작성했다고 할 수 있을지에 대한 고민이 생겼다.그래서 여러 가지 작성 방식을 알아보다가 "단일 단계 빌드, 다단계 빌드"가 존재한다는 것을 알게 되었다.이번 포스트에서는 이 내용들에 대해서 간단하게 정리해 보도록 하겠다. 1. Dockerfile 코드단일 단계 빌드 Dockerfile# 사용할 Java 이미지FROM eclipse..
[k8s] M1 mac에서 k8s, k8s dashboard 구성하기
·
DevOps/k8s
M1에서 k8s 환경을 구성하고 k8s dashboard까지 세팅해 보자📌 서론최근 새로운 회사로 이직한 후 회사 적응에 집중하기로 정하여 한동안 글을 작성하지 못했습니다.한 달쯤 지난 지금 그동안 스스로의 미래에 대해 많은 생각과 고민을 했으며 저는 개발, DevOps를 모두 해보고 싶다는 생각이 들어 다시 개인 공부를 시작했습니다.그래서 이 모든 것을 할 수 있는 개인 프로젝트를 하나 만들었고 이 프로젝트의 로컬 인프라 구성을 k8s로 정했습니다. 이번 포스트는 제가 Apple silicon chip 맥북(M2 max)에서 k8s를 설치한 후 k8s 대시보드까지 세팅해 보는 과정을 설명하고자 합니다. 이 과정 중 많은 블로그들을 확인했지만 그중 한 블로그의 도움을 많이 받았으며 저는 그 과정을 그대..
테라폼(Terraform) 사용 가이드 2:MacOS에 테라폼 설치하기
·
AWS/테라폼(Terraform)
이번 포스트에서는 MacOs에 테라폼을 설치해 보자 1. 테라폼 설치: URL 직접 다운로드 직접 다운로드하기 첫 번째 방법은 URL로 직접 다운로드하는 건데, 최신 버전이나 이전 버전 모두 다운로드할 수 있다. 예를 들어, curl 명령어 또는 다른로드 버튼을 통해 .zip 파일을 다운로드 받고, 압축을 풀어서 terraform 바이너리 파일을 /usr/local/bin에 옮기면 된다. Install | Terraform | HashiCorp Developer Explore Terraform product documentation, tutorials, and examples. developer.hashicorp.com 2. 테라폼 설치: Homebrew 이용 Homebrew 페이지 접속 맥 OS용 무료..
테라폼(Terraform) 사용 가이드 1: 테라폼이란?
·
AWS/테라폼(Terraform)
이번 포스트에서는 테라폼이 무엇인지 알아보자 📌 서론 MSA 프로젝트를 설계하면서 AWS 내부에 많은 서버와 DB를 띄우고 나니 매달 나오는 비용이 상당했다. 그래서 우리 팀은 필요할 때만 EC2를 생성해서 ECS클러스터와 RDS를 가동하면 돈을 아낄 수 있을 것이라고 생각했고 여러 가지 tool을 알아보던 도중 terraform을 찾아냈고 이를 적용시켰다. 그 내용을 공유하기 전에 테라폼이 무엇인지에 대해 먼저 알아보자 1. 테라폼이란 무엇인가? 테라폼이란? 테라폼(Terraform)은 HashiCorp가 개발한 오픈 소스 'Infrastructure as Code' 도구로, 클라우드 및 온프레미스 리소스의 구축, 변경, 버전 관리를 코드로 효과적으로 관리할 수 있게 한다. 테라폼은 HCL(Hashi..
Zipkin 로그 최적화: AWS ALB 헬스 체크 설정과 로그 추적 간소화
·
Spring MSA
Zipkin 추적 로그에서 ALB가 헬스체크를 진행하다보니 계속해서 로그가 남았던 문제를 해결해 보고자 한다. 이번 포스트는 아래의 내용에서 이어지는 글입니다! SpringBoot MSA 로깅: Zipkin을 사용한 분산 추적에서 예외상황을 다루는 방법 이번 포스트에서는 저번 포스트에서 설명하지 못했던 서버 간 통신에서 예외가 발생했을 때는 Zipkin 추적을 어떻게 할지 설명한다. 1. Zipkin 예외처리를 위해 @SqsListener 메서드 분석하기 1-1. 레시 curiousjinan.tistory.com 지금까지 진행한 MSA 프로젝트에는 멤버와 레시피 서버 두 가지가 있었다. 이 서버들은 SNS와 SQS를 통해 서로 데이터베이스를 동기화하는 방식으로 설계되었고 Zipkin을 도입하여 로그 추적..
SpringBoot MSA 로깅: Zipkin을 사용한 분산 추적에서 예외상황을 다루는 방법
·
Spring MSA
이번 포스트에서는 저번 포스트에서 설명하지 못했던 서버 간 통신에서 예외가 발생했을 때는 Zipkin 추적을 어떻게 할지 설명한다. 1. Zipkin 예외처리를 위해 @SqsListener 메서드 분석하기 1-1. 레시피 서버의 @SqsListener 메서드를 다시 한번 확인해 보자 이전 포스트부터 기록해둔 SqsListener 코드에는 이미 try-catch-finally가 되어있는데 이건 추적에 대한 예외처리가 완료된 상황의 코드다. 이렇게 포스트를 작성한 이유는 모든 동작에 이상이 없는 것을 확인하고 블로그에 글을 작성했더니 예외처리가 된 채로 코드를 캡처해서 글을 작성하게 되어버렸다. 1-2. Zipkin추적의 예외처리가 적용될 try-resource문법 여기서 중요한 부분은 catch문이다. 만..
AWS - ALB를 적용시킨 ECS의 동적 포트 할당관계 동작원리
·
AWS/ECS, ECR
ALB를 적용시킨 ECS의 동작원리 이전 포스트에서 배포를 완료하고 실행했는데 ALB의 DNS주소 뒤에 8081포트를 입력하고 접속하니 접속이 불가능했는데 아무런 포트를 입력하지 않고 접속하니 잘 동작했다. 이에 ALB(Application Load Balancer)를 적용시킨 ECS(Elastic Container Service)의 동작원리를 알아보고 이 포스트를 작성한다. 1. ALB 리스너 포트 설정 ALB의 리스너 포트를 80으로 설정하면, ALB는 클라이언트로부터 80 포트에서 들어오는 요청을 수신한다. 클라이언트는 이 경우 ALB의 DNS 주소만 입력하여 접속할 수 있다 (예: http://ALB-DNS-Address/). 아래와 같이 80 포트를 ALB의 리스너 포트로 설정한 상황이다. 2...