-
[Microk8s] 쿠버네티스 기본 실습
쿠버네티스란? Kubernetes 클러스터는 안정적이고 확장 가능한 방식으로 컨테이너화된 애플리케이션을 호스팅합니다. DevOps를 염두에 두고 Kubernetes는 업그레이드와 같은 유지 관리 작업을 매우 간단하게 만듭니다. MicroK8s란? MicroK8s 는 워크스테이션이나 개인 장치에서 실행하기 위한 용도로 사용되며 K8s의 경량화 버전이라고 보면 쉽습니다. MicroK8s는 실제 쿠버네티스처럼 타 컴퓨터와도 연결이 가능하며 K8s에서 사용하는 대부분의 기능을 지원합니다. Linux Ubuntu는 MicroK8s와 호환성이 가장 좋은 OS이며 설치 또한 어렵지 않습니다. 테스트 환경 Welcome to Ubuntu 20.04.5 LTS (GNU/Linux 5.15.0-1025-gcp x86_64..
2022.12.07
-
[GCP] Cloud Run과 Cloud Build를 사용하여 Spring Boot 배포하기
시스템 아키텍처 Local 설정 Spring Boot의 application-prod.yml 설정 Github에 DB 정보를 올릴 수 없고, 없으면 서비스를 실행할 수 없기에 보안 문제가 발생하지 않고 DB정보를 컨테이너에 담을 수 있을지 고민했다. 결과적으로 환경변수를 사용하기로 했다. 위와 같이 설정하면 application-prod.yml에 시스템 환경변수 값을 불러올 수 있다. Dockerfile 설정 Cloud Run의 경우 컨테이너 기반으로 서비스를 실행하기 때문에 도커를 활용하여 빌드하였다. FROM adoptopenjdk/openjdk11 COPY gradlew . COPY gradle gradle COPY build.gradle . COPY settings.gradle . COPY src..
2022.12.05
-
[Continuous Deploy] Github actions .env 파일 관리하기 with Github private repository
목적 Continuous Deploy 과정에서 Dotenv 파일을 꽤 번거로운(?) 녀석이다. 보안상 Github repository에 push하긴 찝찝하다. 그래서 이 파일을 Continuous Deploy 과정에서 리눅스의 Echo & Cat 과 Github Actions Secret Key를 사용해서 만들어줬는데, 가독성과 관리면에서 "이게 맞나?" 싶다. 이를 해결하기 위한 첫번째 방법을 찾아서 기록해본다. 사용 된 아키텍처 Github Public & Private Repository는 빌드될 파일이 있는 레포지토리를 뜻하며 Github Private Repository는 .env 파일이 따로 보관되어 있는 Repository를 뜻한다. 위 두가지를 한개의 계정으로 진행할 수 있지만 본 글에서는..
2022.10.14
-
[Grafana] Legend의 Display Name
환경 Grafana v9.4.3 문제 상황 Grafana 에서 Legend가 정상적으로 표시되지 않을 때가 있다. 이 때 오른쪽 설정(grafana v9.4.3)의 Standard options > Display Name을 변경하면 값이 바뀐다. 다만, 원하는 Display name을 고정으로 작성하면 모든 Legend가 전체적으로 변경된다. 이를 방지하기 위해선 아래와 같이 작성해야한다. ${__series.name} ${__field.labels} ${__field.labels.__values} Display Name에 위와 같이 작성하면 유기적으로 변경할 수 있다. 관련내용을 Grafana Docs에서도 확인할 수 있다. 레퍼런스 https://grafana.com/docs/grafana/lates..
2023.03.14
-
[Grafana] Unit, Decimals ( 단위, 소수점 )
환경 Grafana v9.4.3 문제상황 데이터의 단위를 명확하게 정의하면 해당 단위에 맞게 표기형식을 변경해준다. 예를들어 데이터의 기본 단위가 bytes로 이뤄져 있다면 오른쪽 설정 중 Standard options의 Unit을 변경하면 된다. 예를들어 파일 용량을 담은 데이터가 있고 값의 기본 단위가 bytes면 Unit을 bytes로 변경해보자. 숫자 형식에 따라 Byte, KB, MB, GB 와 같이 형식에 맞게 값을 변경해준다. 더불어 단위가 변경되면서 소수점 자리가 생기게 되는데 아무것도 설정하지 않으면 정수의 형태로 출력된다. 이럴때는 Decimals를 사용하여 소숫점을 통해 더 자세하게 표현하거나 생략할 수 있다.
2023.03.14
-
[한이음 2022] MSA기반 인사 관리 시스템 Popool
본 게시글은 2022년 한이음 ICT멘토링 공모전의에 참여하여 Popool 서비스를 개발한 과정과 소개를 담고 있습니다. Introduce 대규모 트래픽에 유동적으로 대응 가능한 Micro Service Architecture 를 이해하고 설계하며 Netflix의 Eureka와 AWS Elastic Banstalk 서비스를 활용하여 클라우드 네이티브한 형태의 아키텍처를 구현 Role Devops Engineer & Backend Engineer Spring Cloud Eureka와 Spring Config Server 그리고 Github Actions를 활용한 MSA 멀티모듈 배포에 집중 Architecture AWS Service Amazon Elastic Beanstalk Amazon Simple S..
2023.06.04
-
[Prography] 영양제 알림 서비스 PILIT
본 게시글은 Prography 7기 6팀 백엔드 팀원으로 참여하여 Pilit 서비스를 개발한 과정과 소개를 담고 있습니다. Introduce Pilit은 바쁜 현대 사회를 살고있는 사람들을 위해 영양제 조합을 추천하고, 영양제를 놓이지 않고 먹을 수 있도록 돕는 서비스 입니다. Role Backend Engineer & Devops Engineer Architecture AWS Service Amazon Elastic Container Service ( Fargate ) Amazon Elastic Container Registry Amazon Elastic Load Balancer Amazon ElastiCache ( Redis ) Amazon Relational Database Service ( Mys..
2023.06.02
-
AWS ECS Health-Check
증상 지속적인 HTTP 503 Service Unavailable 에러 발생. 규칙적인 발생이 아닌 불규칙 적인 발생. 별다른 Request가 없어도 주기적으로 503 발생. 로컬에서 작업 당시 전혀 문제없음. 시스템 아키텍처 삽질 과정 서버 코드 점검 먼저 Validation을 실패한 부분이 없는지 여러 가지 Test Input을 입력했다. 그럼에도 Local에서 지속적으로 작동이 잘 되는 것을 확인하였다. 같은 오류가 반복되자 Exception filters까지 사용하여 서버가 갑자기 중단되는 상황을 최소한으로 줄였다. 그럼에도 불구하고 지속적인 503 에러코드가 발생하였고, 끝없는 삽질 끝에 AWS를 확인하기 시작했다. AWS 점검 ECS 클러스터에서 Task의 상태를 확인했다. 상태는 ACTIVE..
2022.09.03