젠킨스로 배우는 CI/CD 파이프라인 구축 - 전역 도구 구성 이해
·
Study/젠킨스로 배우는 CI,CD 파이프라인 구축
전역 도구 구성 페이지에서 JDK와 메이븐을 구성하는 방법을 설명해보자!💡전역 도구 구성 이해 메이븐은 컴파일, 패키징, 배포와 같은 자바 애플리케이션의 빌드 단계를 자동화하는 데 사용되며, 다른 플러그인들의 지원을 받아 작업을 수행하는 명령행 인터페이스 빌드 도구다.메이븐의 설정에는 2개의 구성파일이 사용된다.메이븐 설치파일(전역 설정) : 기본 위치는 ${maver.home}/conf이고, 파일이름은 settings.xml사용자 설치 파일(사용자 설정): 기본위치는 ${user.home}/.m2이고, 파일이름은 settings.xml해당파일은 메이븐으로 자바 프로젝트를 빌드하는데 필요한 설정이 들어있으며, 동일한 시스템에서 작업하는 모든 사용자에게 적용되는 공통 메이븐 설정은 전역 설정 파일에 저장..
젠킨스로 배우는 CI/CD 파이프라인 구축 - 젠킨스 설치
·
Study/젠킨스로 배우는 CI,CD 파이프라인 구축
🖍️ 젠킨스 설치는 여러 방법이 있다.📂 msi로 설치하기1. https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/ Thank you for downloading Windows Stable installerJenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their softwarewww.jenkins.io2. 다운로드 받은 파일 실행 3. Logon Type을 LocalSystem을 사용하도록 설정4. 포트 설정 > Test Port 5. JDK ..
젠킨스로 배우는 CI/CD 파이프라인 구축 - 젠킨스 소개 및 구성
·
Study/젠킨스로 배우는 CI,CD 파이프라인 구축
💡CI ( Continuous Integration )개발자를 위한 자동화 프로세스인 지속적인 통합어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드/ 테스트 되어 공유 Repository에 (ex. git,github) 통합하는것을 의미한다.다수의 개발자가 작업할 경우 레포지토리에 쌓이는 commit들이 충돌하는 것을 자동화된 빌드와 테스트로 방지할수 있다.💡 CD ( Continuous Deployment ) : 지속적인 배포수동적으로 배포하는것을 지속적인 제공이라 하는데, 이것을 자동화하는것💡 젠킨스CI/DI 프로세스를 자동화하고 생산성을 높이는 데 많이 사용되는 자동화 서버소프트웨어 개발 프로세스의 다양한 단계를 자동화하는 도구중앙 소스 코드 레포지터리에서 최신 코드 가져오기, 소스 코..
[DB] 7장. SQL 옵티마이저
·
Study/친절한 SQL 튜닝
1. 통계정보와 비용계산 원리 선택도와 카디널리티에 이어 통계정보에 구체적으로 어떤 항목들이 있는지 살펴보고, 옵티마이저가 통계정보를 이용해 비용을 계산하는 원리를 간략히 살펴보자.🔎 선택도와 카디널리티⚙️ 선택도(Selectivity)전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율단순 '='조건으로 검색할 때의 선택도만 살펴보면, 컬럼 값 종류 개수( Number of Distinct Values NDV)를 이용해 구한다.선택도 = 1 / NDV⚙️ 카티널리티 (Cardinality)전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수카티널리티 = 총 로우 수 X 선택도 = 총 로우 수 / NDV더보기✨예시로 상품분류 컬럼에 가전, 의류, 식음료, 생활용품의 값이 있을 때, 조건절에 대한 선..
[DB] 6장. DML 튜닝(2)
·
Study/친절한 SQL 튜닝
3. 파티션을 활용한 DML 튜닝 파티션을 이용하면 대량 추가/변경/삭제 작업을 빠르게 처리할 수 있다. 🔎 테이블 파티션파티셔닝(Partitioniong): 테이블 또는 인덱스 데이터를 특정 컬럼(파티션 키) 값에 따라 별도 세그먼트에 나눠서 저장하는 것일반적으로 시계열에 따라 Range방식으로 분할하지만, 그 외 다른 기준(리스트 또는 해시방식)으로 분할할 수 있다.⚙️ 파티션이 필요한 이유 관리적 측면 : 파티션 단위 백업, 추가, 삭제, 변경 → 가용성 향상성능적 측면 : 파티션 단위 조회 및 DML, 경합 또는 부하 분산파티션에는 Range, 해시, 리스트 세 종류가 있다.⚙️ Range 파티션오라클 8버전부터 제공된 가장 기초적인 방식주로 날짜 컬럼을 기준으로 파티셔닝함아래는 주문 테이블을 ..
[DB] 6장. DML 튜닝(1)
·
Study/친절한 SQL 튜닝
1. 기본 DML 튜닝 DML성능에 영향을 주는 요소와 튜닝 방법을 설명해보고, DML성능에 영향을 미치는 요소에 어떤 것들이 있는지 살펴보자.🔎 DML성능에 영향을 미치는 요소인덱스무결성 제약조건절서브쿼리Redo 로깅Undo 로깅Lock커밋🔎 인덱스와 DML 성능테이블에 레코드를 입력하면, 인덱스에도 입력해야 한다.(인덱스에 입력하는 과정이 더 복잡하므로, DML 성능에 미치는 영향도 더 크다.)테이블은 Freelist를 통해 입력할 블록을 할당받지만, 인덱스는 정렬된 자료구조이므로 수직적 탐색을 통해 입력할 블록을 찾아야 한다.(*Freelist :  테이블마다 테이터 입력이 가능한 블록 목록)DELETE할때, 테이블에서 레코드 하나를 삭제하면, 인덱스 레코드를 모두 찾아서 삭제해줘야 한다.UPD..
[DB] 5장. 소트 튜닝
·
Study/친절한 SQL 튜닝
1. 소트 연산에 대한 이해 SQL 수행 도중 가공된 테이터 집합이 필요할 때, 오라클은 PGA와 Temp 테이블 스페이스를 활용한다. (소트머지조인, 해시조인, 데이터 소트와 그룹핑등이 대표적!)지금부터 데이터를 소트하거나 그룹핑하는 과정을 살펴보자.🔎 소트 수행 과정소트는 기본적으로 PGA에 할당한 Sort Area에서 이루어진다.Sort Area(메모리 공간)가 다 차면, 디스크 Temp 테이블스페이스를 활용한다.Sort Area에서 작업을 완료할 수 있는지에 따라 소트를 두 가지 유형에 나눈다.1. 메모리 소트( In-Memory Sort )'Internal Sort'라고도 함전체 데이터의 정렬 작업을 메모리 내에서 완료하는 것2. 디스트 소트 (To-Disk Sort )'External Sor..
[DB] 4장. NL조인
·
Study/친절한 SQL 튜닝
1. NL조인 🔎 NL조인(Nested Loop)의 기본 메커니즘SQL이 탄생하기 전에는 조인하는 프로그램을 개발자가 직접 작성해야했다. → JAVA 이중for문 for(i=0; ifor outer in 1..100 loop for inner in 1..100 loop     dms_output_line(outer||':'||inner);   end loop;end loop;🔎 NL조인 ( Nested Loops Join )인덱스를 이용한 조인Outer, Inner 양쪽 테이블을 모두 사용한다.Outer쪽 테이블은 Table Full Scan 하더라라도 한번만 거치기 때문에 인덱스가 필수적이지 않는다.Inner쪽 테이블은 인덱스를 사용해야된다. 인덱스를 사용하지 않으면 Outer 루프에서 읽은 건..
[DB] 3장. 인덱스 튜닝(2)
·
Study/친절한 SQL 튜닝
3. 인덱스 스캔 효율화IOT, 클러스터, 파티션은 테이블 랜덤 액세스를 최소화하는데 효과적인 저장구조이지만, 운영환경에서는 성능 검증을 위해 많은 테스트를 진행해야 하므로 어려움이 있다. 그러므로 운영환경에서 가능한 일반적인 튜닝 기법은 인덱스 컬럼추가를 사용한다. 🔎 인덱스 탐색-- 조건절 1 where C1 = 'B'-- 조건절 2 (스캔량 줄임)where C1 = 'B' and C2 = 3-- 조건절 3 (스캔량 줄임)where C1 = 'B' and C2 >= 3-- 조건절 4 (스캔량 줄임)where C1 = 'B' and C2  ※ 인덱스 스캔 효율이 좋은지 나쁜지는 알 수 있는 방법은? > SQL트레이스 사용🔎 액세스 조건과 필터 조건  인덱스 스캔하는 단계에 처리하는 조건절은 액세스 ..
[DB] 3장. 인덱스 튜닝(1)
·
Study/친절한 SQL 튜닝
1. 테이블 랜덤 액세스 최소화💫들어가기 전에 - SQL 튜닝은 랜덤I/O와의 전쟁이며, 랜덤 I/O는 중요하다.- 데이터베이스는 읽어야할 데이터량이 많으면 그 과정에 수많은 디스크 I/O가 발생하기 때문에 느리며, 이를 극복하기 위해 랜덤 I/O 최소화가 중요하다. (ex. IOT, 클러스터, 파티션, 테이블 Prefectch, Batch I/O 등등)- 조인 메소드 발전은 랜덤I/O 최소화에 맞춰져 있다.(조인메서드 중 NL조인이 대량 데이터를 조인할 때 느린 이유는 랜덤 I/O때문이며, 이를 극복하기 위해 소트머지 조인, 해시 조인이 개발된다.)인덱스를 이용해도 조건절에 해당하는 데이터만 읽는데 왜 파티션 Pruning(조건절에 해당하는 파티션만 읽는 기능)이 필요할까?- 인덱스만 사용하면 모든 ..