분류 전체보기
-
입출금 내역 분석기 (1) - 응집도와 결합도에 따른 클래스 분리언어/객체지향 2024. 5. 24. 17:12
1. 목표단일책임원칙을 배워보자응집도와 결합도에 대해 생각해보자 2. 요구사항텍스트 파일이 콤마로 분리된 값으로 주어진다. 이 값을 파싱해서 결과를 얻을 것이다.입출금 내역의 총 수입과 총 지출은 각각 얼마인가? 결과는 양수인가 음수인가?특정 달엔 몇 건의 입출금 내역이 발생했는가?지출이 가장 높은 상위 10건은 무엇인가?돈을 가장 많이 소비하는 항목은 무엇인가?30-01-2017,-100,Deliveroo//..3. KISS 원칙 keep it short and simple 원칙을 의미한다. 코드 설계나 내용을 불필요하게 복잡하게 만들지 말자는 원칙 public class BankTransactionAnalyzerSimple { private static final String RESOURCES ="..
-
Github Action으로 ecr 업로드 하기Infra/CI&CD 2024. 5. 16. 23:39
ECR이란?AWS에서 제공하는 관리형 컨테이너 이미지 레지스트리 서비스AWS IAM을 사용하여 리소스 기반 권한을 가진 프라이빗 리포지토리 지원지정된 사용자 혹은 EC2 인스턴스가 컨테이너 리포지토리 및 이미지에 엑세스 가능하다. Docker hub와 같이 이미지를 저장할 수 있는 저장소와 같은 개념이다.GithubAction과 같이 사용하면, 워크플로우의 결과로 docker Image를 생성하고, ECR에 간단하게 업로드 할 수 있다.ECR 생성 아마존에서 Elastic Container Registry검색해서 시작하자Repository를 하나 만들어보자! 다음으로 IAM으로 넘어가서 User와 Policy를 생성하자정책 생성을 눌러서 새로운 정책을 생성하자 여기서 정책은 ECR에 접근하고, 이미지를 ..
-
Github Action 기본 사용법Infra/CI&CD 2024. 5. 16. 22:33
CI/CD란?소프트웨어 개발 과정에서 효율성과 신속성을 극대화하는 자동화된 프레임워크 개발부터 운영까지 소프트웨어 개발 라이프사이클의 모든 단계를 아우른다.크게 지속적 통합, 지속적 전달, 지속적 배포로 구분 된다. 지속적 통합 (CI)개발자들이 작업한 코드를 주기적으로 공유레퍼지토리에 병합, 코드 통합을 자동화하는 과정 모든 변경사항은 자동 빌드 및 테스트를 거쳐 메인 브랜치에 통합된다.코드 충돌을 최소화하며, 소프트웨어 품질을 유지하고, 배포 준비 상태를 지속적으로 유지할 수 있다.BUILD -> TEST -> MERGE 과정을 아우름 특히! TEST가 매우 매우 중요하다. 지속적 전달 (CD - Continuous Delivery)코드 변경사항이 자동으로 빌드 및 테스트를 거쳐 실제 운영 환경에 ..
-
스프링 부트 모니터링 (3) - 프로메테우스와 그라파나 활용하기Web/환경설정 관련 2024. 5. 14. 18:23
프로메테우스란?시간이 지남에 따라 추이가 변하는 데이터를 메트릭이라고 한다. 대표적으로 CUP 사용량, 메모리 사용량등을 생각할 수 있는데, SpringBoot는 메트릭의 수집을MicroMeter 모듈을 내장한 엑추에이터가 담당한다.이때, 메트릭은 시간이 흐를수록 계속 쌓이게 되고, Application 메모리가 증가하여, 지속적으로 쌓이는 메트릭을 모두 커버할 수 없다. 따라서 메트릭 전용 외부 DB를 연결해 두는데, 이것이 프로메테우스이다. 프로메테우스는 마이크로미터가 수집한 메트릭 데이터를 일정시간 간격으로 PULL해서 DB에 수집한다.이때, MicroMeter Prometheus구현체가 필요하다. 왜냐면, 마이크로미터는 수집한 메트릭을 JSON 형식으로 전달하지만,프로메테우스는 JSON 데이터를..
-
스프링 부트 모니터링(2.2) - Info 엔드포인트 탐구Web/환경설정 관련 2024. 5. 14. 16:49
info엔드포인트를 통해 애플리케이션 관련 정보를 확인할 수 있다.info 엔드포인트는 기본적으로 아무것도 제공하지 않는다. 하지만 적절히 커스텀해서 원하는 정보를 노출할 수 있다. 1. 다양한 정보 표시해보기application.properties에 다음과 같은 내용을 추가해보자info.app.name= Spring Boot Actuator Info Applicationinfo.app.description=Spring Boot application that explores the /info endpointinfo.app.version=1.0.0management.info.env.enabled=truehttp://localhost:8080/actuator/info에 접근하면, 위와 같이 미리 적어둔 정보..
-
스프링 부트 모니터링(2.1) - Health 엔드포인트 탐구Web/환경설정 관련 2024. 5. 14. 16:02
Health 엔드포인트에 접근하면, 애플리케이션과 애플리케이션에서 사용되는 여러 컴포넌트의 상태를 전반적으로 파악할 수 있다. 스프링 부트는 애플리케이션 컴포넌트별로 다양한 HealthIndicator를 제공하는데, 이 중 DiskSpaceHealthIndicator와 PingHealthIndicator와 같은 일부 구현체는 항상 기본으로 제공한다. 1. 좀 더 자세한 정보보기 Health 엔드포인트로 애플리케이션에 대한 좀 더 자세한 정보를 수집해보자 management.endpoint.health.show-details=always#총 3가지 값을 지정할 수 있다.# always = 상태 상세 정보를 항상 표시 # naver = 기본 값이며, 상세 정보를 표시하지 않는다.# when-authoriz..
-
스프링 부트 모니터링 (1) - 액추에이터 기본 설정Web/환경설정 관련 2024. 5. 14. 13:57
액추에이터란 스프링 부트 애플리케이션 모니터링과 관리에 필요한 기능을 제공운영에 필요한 광범위한 기능을 직접 구현할 필요 없이 쉽게 사용할 수 있다. 1. 액추에이터 기본 설정 액추에이터 관련 의존관계를 추가한다. // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuatorimplementation group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '3.2.4'spring-boot-starter-actuator에는 spring-boot-actuator-autoconfigure와 micrometercore 의..
-
스프링 부트 - 실패 분석기Web/환경설정 관련 2024. 5. 14. 12:59
실패 분석기란 애플리케이션에서 발생한 실패/예외를 감지하고 해당 이슈를 이해하는 데 도움이 되는 정보 제공 장점에러에 대한 상세한 메시지를 제공해서 문제의 근본 원인과 해결책을 결정할 수 있게 돕는다.애플리케이션 시작 시점에 검증을 수행해서 발생할 수 있는 에러를 가능한 빨리 파악할 수 있다. 1. 실패 분석 시나리오 요구 사항의존하고 있는 외부 REST 서비스를 사용할 수 있는지 애플리케이션 시작 시점에 확인서비스 사용 불가 시 상세한 내용 확인시나리오애플리케이션이 강아지의 상세 정보를 외부 API https://dog.ceo/dog-api/에서 가져온다.해당 API가 제대로 작동하지 않으면, 애플리케이션을 실행할 수 없음으로 API상태를 점검해야한다. 작업 절차 ContextRefreshedEnv..