분류 전체보기

    리눅스 Buffer/Caches 자원 반납하기. Crontab 스케줄링 관리!

    리눅스 Buffer/Caches 자원 반납하기. Crontab 스케줄링 관리!

    모든 운영체제에서 처리 속도와 관련된 이슈 중. 공통점은 Disk I/O이다. 모든 튜닝의 기본으로도 손꼽히는 Disk I/O를 줄이기 위해 리눅스 운영체제에서는 Buffer/Caches 전략이 사용된다. 리눅스 운영체제는 물리적인 메모리에 자주 사용되는 파일의 내용이나, 파일 위치 등 여러 정보를 Buffer/Cache에 자동으로 할당하여 다음 같은 파일의 Access를 위해 관리된다. 하지만, 이런 전략은 물리적인 메모리의 부족 현상을 일으켜 하드디스크에 설정된 Swap 메모리 영역을 사용하게 된다. 따라서, 성능적인 부분에서 역효과를 나타내게 되므로 관리가 필요하다. Buffer/Caches 비우기 리눅스 운영체제에는 drop_caches를 제공하는데 /proc/sys/vm/drop_caches 위..

    [Docker] Dockerfile Docs - 나만의 문서.

    본 문서는 Dockerfile에 대한 예제를 계속 기록하면서 사용 방법에 대해 작성한다. Dockerfile 이란? 지금까지는 단순히 공식 허브에 이미지를 다운로드하여서 컨테이너를 생성하고 그 안에 각종 유틸을 설치하고 컨테이너 환경을 구성해야 했다. 하지만, 매번 이렇게 구성한다면 애플리케이션을 동작하는 환경을 구성하기 위해 유틸을 설치하고 환경을 구성하는 작업을 반복해야 합니다. 이런 이슈를 해결하기 위해 Docker에서는 Dockerfile을 제공하는데, 컨테이너를 구성하는 기본 환경 ( 패키지, 소스 코드, 명령어, 환경변수, 메타데이터, 등등)을 기록한 파일이다. 그리고 간단하게 Docker build를 통해 하나의 이미지 결과로 만들어 줍니다. Docker compose와 연동하게 되면 환경 ..

    [Docker] Docker-Compose Docs - 나만의 문서.

    본 문서는 Docker Compose에 대한 예제를 계속 기록하면서 사용방법에 대해 작성한다. Docker Compose 란? 여러 개의 컨테이너가 하나의 애플리케이션으로 동작하는 구조에서 하나의 컨테이너를 run 명령어로 여러 번 실행시켜 컨테이너를 시작할 수 있지만 YAML 파일에 여러 개의 컨테이너의 실행 절차를 정의하여 컨테이너를 실행시키는 환경을 Docker가 제공한다. 이를 Docker Compose라고 한다. Docker Compose 설치 $ sudo curl -L -s`-`uname -m` -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose github에서 간단하게 다운로드가 가능하다. 설치 버전은 ..

    Jenkins + git/bitbucket + docker CI/CD 구축 이야기

    Jenkins + git/bitbucket + docker CI/CD 구축 이야기

    최근에 개발부터 배포까지의 과정이 너무 귀찮고 버전 관리가 원활하게 이루어지지 않아 CI/CD 과정을 간단하게 구현하였다. 구현하면서 구현 방법이나 간단하게나마 CI/CD가 이루어지는 과정에 대해 이야기해보려고 한다. Environment OS 운영체제 Ubuntu 18.04.6 LTS Docker 20.10.12 Docker API 1.41 Docker Compose 1.26.2 Docker Compose Python 3.7.7 Jenkins 2.332.3 필자가 구현한 CI/CD 과정을 간단하게 설명하자면 아래와 같다. 환경 : 우분투 서버 / Docker / Bitbucket(git과 동일하다.) / SpringBoot ( Gradle ) CI/CD Process 사전 작업 Jenkins 서버 설치..

    [Spring Boot] Spring Cloud GateWay 필터 추가

    [Spring Boot] Spring Cloud GateWay 필터 추가

    스프링 부트에서는 Cloud 환경을 위한 Gateway 프레임워크를 제공한다. mvn repository에 Maven이나 Gradle에 Dependency를 추가할 수 있도록 검색을 제공한다. Maven Repository: org.springframework.cloud » spring-cloud-starter-gateway mvnrepository.com 이 글에서는 PRE, POST 필터를 추가하는 방법을 제시한다. 제공되는 Filter의 종류 org.springframework.cloud.gateway에서 기본적으로 제공하는 필터는 아래와 같이 수십 개의 필터를 제공한다. YML 설정. spring: application: name: apigateway-service cloud: gateway: d..

    [Spring Boot] Filter

    [Spring Boot] Filter

    스프링에서는 애플리케이션에서 공통적인 처리를 위해 활용할 수 있도록 제공하는 것이 3가지가 있다. Filter Interceptor AOP 위 3가지의 공통적인 특징은 어떤 행동이나 처리를 하기 전에 전처리 작업을 하거나, 행동이나 처리를 한 후에 후처리 작업을 할 수 있도록 제공한다는 것이다. Spring Life Cycle과 DelegatingFilterProxy 아래의 그림은 스프링의 라이프 사이클을 잘 설명해주고 있는 그림이다. 필터는 스프링 영역 밖에서 실행된다는 것을 주의하자 스프링 영역 밖이라는 뜻은 필터를 Bean으로 주입도 할 수 없고 Bean객체를 주입(DI) 받을 수도 없다. DelegatingFilterProxy가 등장하기 전에는... 스프링 세상에 DelegatingFilterPr..

    [MSSQL] 윈도우 함수 ROW_NUMBER() 순차번호 할당

    [MSSQL] 윈도우 함수 ROW_NUMBER() 순차번호 할당

    SQL를 다루다 보면 행별로 순차적인 번호를 부여해야 할 상황이 1번쯤은 온다. RANK()를 활용할 수는 있겠지만, RANK()함수는 번호의 기준이 되는 ORDER BY 절의 데이터가 동일하다면 같은 번호로 할당된다. 그런 점을 보안한 DENSE_RANK() 함수가 있기는 하나 ROW_NUMBER() 함수의 명이 더 의미적으로 적합한 함수인 것 같다. ROW_NUMBER() 함수는 행과 행간의 관계를 정의하는 윈도우 함수이며, ANSI/ISO SQL 표준과 SQLServer, Oracle에서 지원한다. ROW_NUMBER() 란? ROW_NUMBER() 함수는 결과 집합의 파티션 내 각 행에 순차적인 정수를 할당하는 윈도우 함수입니다. ROW_NUMBER()의 특징 행의 번호는 각 파티션에 대해 1번부..

    [MSSQL] 윈도우 함수 RANK() OVER 다루기 / DENSE_RANK()

    [MSSQL] 윈도우 함수 RANK() OVER 다루기 / DENSE_RANK()

    윈도우 함수 중 그룹 내 순위 함수로 RANK() 함수가 존재한다. 윈도우 함수란 행과 행간의 관계를 정의하기 위한 함수이고, RANK() 함수는 ANSI/ISO SQL 표준과 SQLServer Oracle에서 지원한다. RANK()란? RANK() 함수는 결과 집합의 파티션 내에서 각 행의 순서를 할당하는 윈도우 함수이다. RANK()의 특징. 동일한 값을 갖는 파티션 내의 각 행은 동일한 순위를 받습니다. 파티션 내에서 첫 번째 순위는 1부터 시작한다. 같은 순위에 연결된 행의 수를 더하여 다음 행의 순위를 계산한다. RANK() 함수 Syntax RANK() OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC ..