본문 바로가기

개발기술/테스트, 인프라

(7)
테스트의 종류와 선택 일반적으로는 단위 테스트, 통합 테스트, API 테스트 모두 시행하는 것이 이상적인 테스트 전략입니다.  왜 세 가지를 모두 사용하는가?  테스트 종류 목적어떤 걸 확인하나?단위 테스트개별 클래스나 메서드의 로직이 정확한지 검증비즈니스 로직, 조건 분기, 예외처리 등통합 테스트여러 빈(서비스 ↔ 레포지토리 ↔ 설정)이 잘 연결됐는지 검증Bean 주입, 설정값, 실제 외부 의존성과의 통합 작동API 테스트외부 사용자의 시각에서 API가 제대로 동작하는지 검증요청/응답 포맷, HTTP 상태코드, 검증 오류 등  이상적인 테스트 방향  규모  / 상황 테스트 전략 현실화1인 개발 / 사이드 프로젝트단위 + API 테스트 위주. 통합 테스트는 최소한으로.스타트업 / MVP 단계빠른 개발을 위해 단위 or API..
Prometheus 모니터링 + Grafana 프로메테우스(Prometheus) 모니터링 프로그램프로메테우스(Prometheus)는 오픈소스 시스템 모니터링 및 경보(alerting) 도구. 프로메테우스는 여러 컴포넌트로 이루어져 있으며, 아래와 같은 아키텍처로 동작합니다.Exporter : 시스템에서 메트릭 데이터를 노출하는 역할. 서버, 애플리케이션, 컨테이너, 데이터베이스 상태를 모니터링하려면 각각 다른 Exporter가 필요합니다. Prometheus는 PULL 방식으로 데이터를 가져오기 때문에, 각 대상에 맞는 Exporter를 사용해야 합니다.Node Exporter → 물리/가상 서버의 CPU, RAM, 디스크, 네트워크 상태를 수집Micrometer + Prometheus Exporter → Spring Boot 애플리케이션 모니터링데..
대규모 서비스는 어떻게 서비스되는가 1. 클라이언트 요청 시작DNS 조회사용자가 브라우저에 https://example.com을 입력하면, **DNS(Domain Name System)**가 도메인 이름을 서버의 IP 주소로 변환.브라우저 → 로컬 DNS 캐시에서 IP 확인 (이미 조회된 경우 바로 반환).로컬에 없으면 ISP DNS 서버로 요청.ISP 서버에도 없으면 최종적으로 권한 있는 DNS 서버(Authoritative DNS)로 요청.DNS 서버의 역할:사용자 요청을 적합한 서버로 라우팅하기 위해 IP 주소를 반환.예: example.com에 대해 192.168.1.1 반환. 2. 트래픽 라우팅로드 밸런싱로드 밸런싱은 정적인 파일이든 동적인 요청이든 상관없이 모든 요청에 대해 트래픽을 분산하는 방식으로 동작합니다DNS 기반 로드 ..
모니터링 툴 1. Prometheus란?Prometheus는 오픈소스 모니터링 및 경고 시스템으로, 시계열 데이터(Time Series Data)를 수집하고 저장하며, 쿼리를 통해 이를 분석합니다.Prometheus의 주요 특징시계열 데이터 수집:**메트릭(metric)**이라고 불리는 데이터를 시계열(Time Series) 형식으로 수집.예: CPU 사용률, 메모리 사용량, 네트워크 트래픽.Pull 기반 데이터 수집:Prometheus 서버가 모니터링 대상(Exporter)에서 데이터를 **끌어오는 방식(Pull)**으로 수집.Query Language (PromQL):데이터를 분석하고 시각화하기 위한 쿼리 언어.복잡한 데이터 처리를 쉽게 수행 가능.알림(Alerting):특정 조건이 충족되면 AlertManage..
AWS 서비스 AWS는 25개 리전과 81개의 가용 영역(AZ)을 기반으로 다양한 클라우드 서비스를 제공리전은 리전은 AWS의 서비스가 호스팅되는 지리적 위치를 의미합니다 각 리전은 특정 국가나 도시에 위치하고 있습니다. AZ는각 리전 내에 존재하는 독립된 데이터 센터 집합을 의미합니다.주요 서비스: 컴퓨팅(EC2), 스토리지(S3), 네트워킹(VPC, ELB), 데이터베이스(RDS, DynamoDB), 보안(IAM, Shield) 등1. 기본 개념클라우드 컴퓨팅 개념:공유가능한 컴퓨팅 자원을 네트워크를 통해 접근할 수 있도록 하는 모델IaaS (Infrastructure as a Service) : 서버, 스토리지, 네트워킹 등의 기본 인프라 예시: AWS EC2, Microsoft Azure, Google Comp..
데이터베이스 스케일 업 & 아웃 스케일업 : 단일 서버(하드웨어)의 성능을 증가시켜 더 많은 요청을 처리하는 방법 스케일아웃 : 동일한 사양의 새로운 서버(하드웨어)를 추가하는 방법일반적으로, 스케일업을 할때에는 서비스 중단이나 추가적인 하드웨어 비용이 발생한다. RDBMS는 스케일 업을 하기위해서는 새로운 서버에 기존 서버의 데이터를 옮기고 데이터를 정리하는데 번거로운 작업이 필요함.반면, NoSQL은 처음부터 스케일 아웃을 염두에 두고 설계되었기때문에 데이터의 증가나 요청량이 증가하더라도 비슷한 사양의 새로운 하드웨어를 추가하면 문제가없음.   Horizontal Scaling (Scale-Out)What It Is: Horizontal scaling involves adding more machines (or nodes) to t..
Unit Test 코드 작성 테스트 시작 전 점검Function Test comes First. 테스트 코드를 아무리 잘짜더라도 특정한 기능이 Missing되는 부분은 테스트 코드로 잡아줄 수가 없다. 우선은 요구하는 기능이 제대로 동작하는지 API Manual Testing이 선행되고 CoreFunction이 제대로 동작하는지 확인이 완료된 후에 테스트코드를 진행한다.테스트의 중요성과거1. 방식 : 자동화하기 어려운 sql중심의 코드들이 많아, 테스트케이스를 개발자가 직접 만들고, 기능을 동작시켜보는 식으로 수동적으로 진행.  2.관점 : 해당 방식은 1회성 외주 개발 후 철수하는 방식으로 진행되어, 코드의 품질보다는 기능적 완성도만 점검하는 방식이며 코드의 유지보수성에 대해서는 중요성이 낮았음.3.단점 : 기능이 바뀌면 새로 테..