전체 글

기록 및 공유. 언젠가는 팔만대장경 같은 존재감을 가졌으면 좋겠습니다.
· DevOps/AWS
AWS의 컨테이너 서비스인 ECS를 시작하기 위한 클러스터 유형으로는 서버리스인 Fargate 유형과 EC2 유형이 있다. EC2 유형은 인스턴스를 직접 관리하는 만큼 관리 포인트가 늘어나지만, 그만큼 비용 부담이 더 적다. EC2 유형의 큰 특징 중 하나는 네트워크 모드이고, 또 다른 하나는 Capacity Provider, 혹은 용량 공급자이다. 클러스터 오토스케일링과 서비스 오토스케일링Capacity Provider를 이해하기 위해 오토스케일링에 대해 이해할 필요가 있다. 흔히 말하는 Auto Scaling Group (ASG)는 컴퓨팅 리소스인 EC2 인스턴스에 대한 오토스케일링 그룹이지만, 컨테이너 기반인 ECS에서 사용되는 오토스케일링은 클러스터 오토스케일링과 서비스 오토스케일링이 있다. 클러..
· DevOps/CICD
Java/Spring Boot 애플리케이션의 CI/CD를 GitHub Actions로 구축한다면 매우 유용한 action이 있다. 문제 상황Java/Spring Boot 애플리케이션의 CI 파이프라인을 GitHub Actions로 구축할 때 gradle build를 통해 전체 테스트를 진행했다. Actions CI 스크립트는 아래와 같았다.name: Java CI with Gradle and MySQLon: pull_request: branches: - main - 'feat/**' - 'refactor/**' - 'fix/**'permissions: contents: read checks: write pull-requests: writejobs: bui..
· Gradle
오랜만에 예전에 하던 프로젝트를 새 노트북에 풀 받아 작업을 해봤는데 빌드와 테스트가 되지 않는 문제가 생겼다. 역시 프로젝트 절반은 세팅이라 그런지, 새로운 디바이스로 오랜만에 해보려니 마치 세팅도 처음부터 하는 기분이었다.. 문제 상황나는 IntelliJ IDE를 사용하고 있다. IntelliJ에서 Gradle을 사용한 애플리케이션을 실행시키거나 빌드, 테스트를 할 때 사용할 툴을 IntelliJ IDEA와 Gradle 중 선택할 수 있다. 해당 설정은 `File` → `Settings` → `Build, Execution, Deployment` → `Build Tools` → `Gradle`에서 할 수 있다. IntelliJ IDEA는 IDE용 최적화가 되어 실행 속도가 빠를 순 있지만, 모든 설정..
· DevOps/AWS
클러스터 인프라를 서버리스로 AWS에 일임하는 것이 아니라, 사용자가 직접 EC2 인스턴스로 구성해서 컨테이너 오케스트레이션 서비스만 ECS를 사용한 방식도 가능하다. 장단점은 명확하게 사용자가 직접 클러스터 내용과 EC2 오토스케일링을 구성해야하지만, 비용을 효율적으로 관리할 수 있다. EC2 시작 유형의 ECS 개요ECS Fargate는 AWS가 자체적으로 인프라 클러스터를 담당하기에, 사용자가 신경써야 할 부분은 컨테이너에 관한 configuration이다. 반면 EC2 시작 유형의 ECS는 컨테이너가 배포될 인프라 클러스터를 EC2 인스턴스로 사용자가 관리해야한다. ECS 서비스가 태스크를 실행하면, 실행되는 태스크 컨테이너를 실제로 올릴 컴퓨터인 EC2 인스턴스 풀을 관리한다는 의미이다.Farg..
· Spring/JPA
Spring Boot를 이용한 간단한 투두리스트 프로젝트를 진행하며 투두 아이템이 소속되는 목표 도메인을 만들고 있었다. JPA EntityDB ORM으로 JPA를 사용했고, 엔티티이자 도메인 클래스는 아래와 같다.@Entity@Table(name = "goal")@NoArgsConstructor(access = AccessLevel.PROTECTED)@Getterpublic class Goal extends BaseEntity { private static final GoalStatus DEFAULT_STATUS = "IN PROGRESS"; private static final PrivacyType DEFAULT_PRIVACY_TYPE = "PRIVATE"; private static final..
간단한 트러블 슈팅이다. 문제 상황새 프로젝트를 만들어 항상 해왔던 것처럼 컨트롤러에 API 엔드포인트를 만들어 실행했더니 전에는 발생하지 않던 문제가 발생했다. 예외 발생java.lang.IllegalArgumentException: Name for argument of type [long] not specified, and parameter name information not available via reflection.Ensure that the compiler uses the '-parameters' flag.스택은 자주 쓰던 것과는 다른 점이 없었는데 이러한 예외가 발생했다. 원인파악된 원인을 간략하게 나타내자면, `@PathVariable`이나 `@RequestParam`등의 애너테이션을 사..
· DevOps/AWS
AWS의 컨테이너 서비스를 통해서 AWS는 서버, 인프라, OS, 컨테이너 런타임 등의 환경을 제공하고, 사용자는 컨테이너 config와 애플리케이션 등에 책임을 가져가며 컨테이너 애플리케이션을 위한 인프라 서비스를 제공받을 수 있다. Elastic Container Service컨테이너 애플리케이션이 필수가 된 요즘 쿠버네티스가 컨테이너 오케스트레이션 플랫폼으로 많은 선택을 받고 있다. AWS에서도 이를 지원하는 Elastic Kubernetes Service(EKS)가 있지만, 완전 관리형 컨테이너 오케스트레이션 서비스인 Elastic Container Service(ECS)도 존재한다. ECS를 사용하면 후에 컨테이너 오케스트레이션 플랫폼을 교체할 때 마이그레이션이 힘들 수도 있겠지만, AWS E..
· DevOps/AWS
Elastic Container Registry일관되고 가벼운 컨테이너 런타임 실행환경을 위해 빌드된 이미지들을 저장하는 곳이 컨테이너 이미지 레지스트리이다. 대표적으로 컨테이너 플랫폼으로는 도커가 있고, 도커 이미지의 레지스트리로 도커 허브가 있다. 도커 이미지와 같은 컨테이너 표준 OCI 이미지의 저장소를 관리형 서비스로 제공하는 것이 AWS ECR이다.퍼블릭 레지스트리나 ECR 모두 기본적인 레지스트리 기능을 제공한다. 외부에서 pull 할 수 있는 이미지들을 모아놓을 수 있는 허브로서의 기능성이다. ECR은 이외에도 추가적인 기능을 제공한다. Lifecycle PolicyECR 내의 오래된 이미지들을 자동으로 삭제할 수 있는 정책을 정할 수 있다. ECR은 보관된 이미지 용량만큼 비용이 부과되기..
· DevOps/AWS
Auto Scaling컴퓨팅 리소스의 규모나 사이즈(scale)를 조절하는 것을 스케일링이라고 한다. 사이즈를 키우거나(scale up), 줄이거나(scale down), 규모를 확장하거나(scale out), 축소하며(scale in) 컴퓨팅 리소스를 조절해 가용성과 안정성을 확보하고 비용을 효율적으로 관리할 수 있다.이러한 스케일링 작업 중 용량 확장과 축소를 클라우드 상에서 자동으로 수행하는 것을 오토스케일링이라고 하고, AWS에선 Auto Scaling Group(ASG)를 통해 EC2 인스턴스들을 하나의 논리적인 단위로 묶어 scale in/out을 자동으로 수행할 수 있다. ASG는 Multi-AZ이다. 여러 가용영역을 걸쳐 설정할 수 있지만 한 리전 내에서만 할 수 있다. 인스턴스 개수 한도..
· DevOps/AWS
Load Balancer서버나 인프라에 가해지는 작업량, 혹은 트래픽 부하를 로드라고 한다. 한 서버가 모든 로드를 다 부담할 때 트래픽이 너무 많다면 장애가 발생할 것이다. 이럴 때 이러한 로드를 여러 리소스에 분산시키는 것이 로드밸런서이다. AWS에는 로드밸런서 서비스로 ELB(Elastic Load Balancer)가 있다. 로드밸런서는 OSI 7계층에서 3, 4, 7계층에 존재할 수 있다. 각각 IP, TCP/UDP, 그리고 HTTP 기반으로 트래픽 분산을 수행한다. AWS에서는 3계층 로드밸런서로 GWLB(Gateway Load Balancer)가 2020년 쯤 출시되었는데, 시험에선 어쩌다 한 번 나오고 대부분 4계층 로드밸런서인 NLB(Network Load Balancer)와 7계층 로드밸..
인재이
그냥 흔한 개발 블로그