전체 글 93

TDD로 회원 API를 개발하며 — 테스트가 설계를 바꿨다

들어가며 간단한 회원가입, 내 정보 조회, 비밀번호 수정 API를 TDD로 개발 해보며,그 과정에서 단위/통합/E2E 테스들을 각각 어떤 기준으로 나눴는지, 그 과정에서 어떤 고민을 했는지 정리했다. SI/SM 환경에서 근무하는 나는 TDD를 많이 접해보지 않았기 때문에, 개인적으로 공부하면서 처음엔 솔직히 의문이 있었다. "테스트를 먼저 짜면 뭐가 좋은 거지? 어차피 구현 코드도 같이 짜야 하는데, 오히려 더 느린 거 아닌가?" 막상 해보니 그 답을 조금씩 알게 됐다.TDD란 무엇인가?TDD(Test-Driven Development)는 "테스트를 먼저 작성하고, 그 테스트를 통과하는 코드를 작성하는 개발 방법론" 이다.Red → 실패하는 테스트 먼저 작성 Green → 테스트를 통과하는 최소한의 코드..

개발 2026.05.15

[SQLP 북스터디][Oracle SQL 실전 튜닝 나침반] 페이칭 처리

SQLP를 준비하며 "Oracle SQL 실전 튜닝 나침반" 책 Part9 페이징 처리를 읽고 정리한 글입니다.Oracle SQL 실전 튜닝 나침반Part 09 - 페이징 처리Section01 부분 범위 처리, 전체 범위 처리개념부분범위 처리 : 데이터를 일부분만 SCAN 해서 결과 데이터를 보여줄 수 있는 방식전체 범위 처리 : 전체 데이터를 SCAN을 해야만 결과 데이터를 보여줄 수 있는 방식특징부분 범위 처리 시 특정 조건절에 의해 필터링 비율이 높아지면 높아질수록 Block I/O가 높아진다.ROWNUM을 통해 총 블록수인 19,791건 중 5건의 Buffers가 발생했다.이를 통해 전체 데이터를 읽은 후 결과 데이터를 반환하지 않고 일부만 SCAN 했다는 것을 알 수 있다.CUSTOMER_ID=..

자격증/SQLP 2025.12.21

[SQLP 북스터디][Oracle SQL 실전 튜닝 나침반] 실행 계획 분리

SQLP를 준비하며 "Oracle SQL 실전 튜닝 나침반" 책 Part8 실행계획분리를 읽고 정리한 글입니다.Oracle SQL 실전 튜닝 나침반Part 08 - 실행 계획 분리Section01 CONCATNATION을 이용한 실행 계획 분리CONCATNATION개념옵티마이저가 UNION ALL 혀애로 실행 계획을 분리해서 쿼리 변환하는 형태특징조건절에 OR로 묶여있을때 /*+ USE_CONCAT */ 힌트를 사용하게 되면 옵티마이저가 UNION ALL 형태의 SQL 실행 계ㅔ획으로 변경한다UNION ALL로 쿼리 변경 시 옵티마이저가 중복 데이터를 제거해서 쿼리변환한다.실행계획에 CONCATENATION Operation발 생예제/*+ USE_CONCAT */ 힌트 사용하게 되면 옵티마이저는 2번..

자격증/SQLP 2025.12.21

[ERROR] Build 오류 해결 : @annotation pointcut expression is only supported at Java 5 compliance level or above

신규 프로젝트를 셋팅하는 과정에서 오류가 발생해 정리한다. ✔ 오류 내용Caused by: java.lang.IllegalArgumentException: error the @annotation pointcut expression is only supported at Java 5 compliance level or above ✔ 원인 org.aspectj aspectjrt 1.6.2 org.aspectj aspectjweaver 1.6.2 현재 사용하는 jdk 버전은 1.8인데 aspectj 버전을 1.6을 사용해서 발생하는 오류이다.aspectj 1.6버전은 jdk 1.6까지 지원하게 된다. ✔ 해결 jdk1.8을 지원하는 aspectj 버전으로 변경해 pom.xml..

개발/에러정리 2025.12.16

[SQLP 북스터디][Oracle SQL 실전 튜닝 나침반] 서브쿼리

SQLP를 준비하며 "Oracle SQL 실전 튜닝 나침반" 책 Part7 서브쿼리를 읽고 정리한 글입니다.Oracle SQL 실전 튜닝 나침반Part 07 - 서브쿼리Section01 FILTER 서브쿼리개념메인 쿼리의 컬럼이 서브쿼리의 JOIN절에서 참조하는 상관관계 서브쿼리이다.즉,메인쿼리가 먼저 수행되고 서브 쿼리의 JOIN 키에 해당하는 값을 받아서 수행되는 형태의 쿼리이다.특징서브쿼리로 입력되는 값의 DISTINCT한 종류가 적다면( 서브쿼리의 조건이 선택도가 높다면) 캐싱 효과로 I/O가 감소한다.서브쿼리에 입력되는 조건을 SCAN할 때, 결과 건수가 여러 건이라도 JOIN에 성공하는 결과가 1건이라도 걸리면 JOIN을 멈추고 다음 행으로 넘어간다.SELECT 절에서 사용되는 컬럼이 없고 단..

자격증/SQLP 2025.10.26

[SQLP 북스터디][Oracle SQL 실전 튜닝 나침반] JOIN

SQLP를 준비하며 "Oracle SQL 실전 튜닝 나침반" 책 Part6 JOIN을 읽고 정리한 글입니다.Oracle SQL 실전 튜닝 나침반Part 06 - JOINSection01 NESTED LOOP JOIN개념SELECT E.사원명, C.고객명, C.전화번호FROM 사원 E, 고객 CWHERE E.입사일자 >= '19960101'AND C.관리사원번호 = E.사원번호-- outer 사원-- inner 고객/*for( 사원 테이블 쿼리 조건문) { for( 고객 테이블 쿼리 조건문) { } }*/Outer 테이블에서 수행된 집합에서 Inner 테이블을 이중 For문처럼 루프도는 구조.Outer 테이블이 상수로 바뀌어 후행 테이블에 JOIN절 조건으로 공급 ..

자격증/SQLP 2025.10.19

[SQLP 북스터디][Oracle SQL 실전 튜닝 나침반] INDEX 설계 전략

SQLP를 준비하며 "Oracle SQL 실전 튜닝 나침반" 책 Part5 INDEX 설계 전략을 읽고 정리한 글입니다.Oracle SQL 실전 튜닝 나침반Part 05 - INDEX 설계 전략Section01 선택도와 카디널리티NDV(Number Of Disinct Value)유일하게 구별되는 컬럼 값 종류의 개수성별 컬럼은 "남, 여"로 두 종류의 값으로 이루어져 있으므로 NDV는 2COL1이 A, B, C,D 4종류의 값으로 이루어져 있으면 NDV는 4선택도전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율단일컬럼 선택도 : 1 / NDV복합 컬럼 선택도 : 1 /NDB * 1 / NDB카디널리티전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수카디널리티가 높으면 Random Single B..

자격증/SQLP 2025.10.10

[SQLP 북스터디][Oracle SQL 실전 튜닝 나침반] INDEX ACCESS PATTERN-03

SQLP를 준비하며 "Oracle SQL 실전 튜닝 나침반" 책 Part 4 INDEX ACCESS PATTERN 을 읽고 정리한 글입니다.Oracle SQL 실전 튜닝 나침반Part 04 - INDEX ACCESS PATTERNSection 15 INDEX FAST FULL SCAN개념인덱스를 데이터가 들어있는 하나의 세그먼트로 간주하고, 인덱스 리프 블록을 Multi Block I/O로 읽어 들이는 접근 방식INDEX_FFS 힌트를 통해 사용 가능실행계획에 INDEX FAST FULL SCAN Operation 발생특징MultiBlock I/O 사용Table Full Scan과 마찬가지로 MultiBlock I/O를 사용한다.인덱스의 논리적인 B-Tree 구조를 무시하고, 디스크에 할당된 물리적인 순..

자격증/SQLP 2025.10.05

[LINUX] 리눅스에서 실행중인 port 확인하기

리눅스 서버를 관리하다 보면, 현재 어떤 포트들이 열려있는지, 어떤 서비스/프로세스가 사용하는지 확인해야 할 경우가 있습니다.이런 경우 netstat 명령어를 사용하면 원하는 정보를 얻을 수 있습니다. netstat네트워크 연결, 라우팅 테이블, 인터페이스 상태 등을 보여주는 명령어로, 서버에서 네트워크 트러블 슈팅이나 포트 확인 용도로많이 활용됩니다. 옵션 정리옵션 값설명-a모든 연결과 대기 중인 포트 모두 표시-n주소와 포트 번호를 숫자로 표시-p해당 포트를 사용하는 프로세스 정보를 함께 표시-l현재 Listen(대기)중인 포트만 표시-tTCP 프로토콜-uUDP 프로토콜 netstat로 포트 확인하는 방법 어떤 프로세스가 포트를 사용하는지 확인하는 방법저는 보통 -anp 옵션을 많이 사용합니다.n..

개발/OS 2025.10.02

[SQLP 북스터디][Oracle SQL 실전 튜닝 나침반] INDEX ACCESS PATTERN-02

SQLP를 준비하며 "Oracle SQL 실전 튜닝 나침반" 책 Part 4 INDEX ACCESS PATTERN 을 읽고 정리한 글입니다.Oracle SQL 실전 튜닝 나침반Part 04 - INDEX ACCESS PATTERNSection 09 FULL TABLE SCAN 개념TABLE FULL SCAN은 인덱스를 사용하지 않고 테이블 내의 모든 데이터를 처음부터 끝까지 순차적으로 읽는(Sequential Scan) 데이터 접근 방식이다. 동작 특징MultiBlock I/O를 통하여 테이블 전체를 순차적으로 읽으며, 한번의 I/O 호출로 여러 개의 데이터 블록을 한꺼번에 읽어 들인다.스캔 범위는 데이터가 실제로 기록된 최종 블록 위치인 HWM(High Water Mark)까지 스캔한다.멀티 블록 수 ..

자격증/SQLP 2025.09.28