Infra

    [Docker] 계속 잊어버려서 작성하는 도커 사용 간단 정리

    계속 잊어버려서 작성하는 도커 사용 간단 정리 도커에서 사용하는 이미지의 이름 형식 [저장소 이름] / [이미지 이름] : 태그 ex) alicek106/ubuntu:14.04 컨테이너 생성 docker run -i -t ubuntu:14.04 docker run 명령어는 컨테이너를 생성하고 실행하는 역할을 한다. -i -t 옵션은 컨테이너와 상호(interactive) 입출력을 가능하게 한다. ubuntu:14.04 이미지가 로컬 도커엔진에 존재하지 않는다면 도커 중앙 이미지 저장소인 도커 허브에서 자동으로 이미지를 내려 받게된다. 태그 미지정 시, latest 한 것으로 내려받음. docker images 를 입력하면 도커 엔진에 존재하는 이미지의 목록을 출력한다. 컨테이너 생성 시에는 run 이 아..

    [Kubernetes] 쿠버네티스 개념 간략 정리

    쿠버네티스 개념 간략 정리 쿠버네티스에 대해 간략히 정리해보려고 한다. 상세하게는 말고 기초적인 개념 정도로 정리해보겠다. 쿠버네티스를 언급하기 앞서 도커 컨테이너에 대해서 말을 안할 수가 없다. 컨테이너는 어떤 점이 좋을까? vm과 비교해서 빠르게 무언가를 띄울 수 있고, 이미지를 사용해서 버전관리도 용이하고 여러 환경에서 동일한 환경을 사용할 수 있다는 장점이 있을 것이다. 컨테이너에 api 서버도 올리고, mysql도 올리고, jenkins도 올리고 사용을 하게 될 것이다. 그렇지만 컨테이너의 수가 많아질수록 하나씩 관리하기가 힘들어질 것이다. api 서버를 여러대 올려놨는데 버전업을 할 때 하나씩 다 해주어야 할 것이고, 어떤 컨테이너가 문제가 생겼는지 체크를 다 해줘야 할 것이다. 컨테이너에 이..

    쿼리 튜닝 미션 적용기

    쿼리 튜닝 미션 적용기 우테코 레벨 4의 새로운 미션으로 쿼리 최적화 미션이 나왔다. 이 적용기를 써보려 한다. 허접함 주의!!!! 쿼리가 그렇게 좋지 않습니다!!! 모수 테이블이 작아야 한다는 원칙도 잘 지키지 못했다!! 그냥 과정만 봐주세요 ㅎㅎ.. 연습 쿼리로 위의 요구사항이 주어졌다. 테이블 정보는 다음과 같았다. 요구사항을 일단 되는대로 쿼리를 짜보았다. select 연봉높은사원신상.사원번호, 연봉높은사원신상.이름, 연봉높은사원신상.연봉, 사원출입기록.지역, 직급.직급명, 사원출입기록.입출입구분, 사원출입기록.입출입시간 from ( select 사원.사원번호, 사원.이름, 연봉사원정보.연봉 from 사원 inner join ( select 급여.사원번호, 급여. 연봉 from 급여 inner j..

    [Flyway] 간략히 알아보는 Flyway 적용법

    간략히 알아보는 FlyWay 적용법 FlyWay? DB Migration Tool 도입하게된 이유는? 진행 중인 프로젝트에서 spring.jpa.hibernate.ddl-auto 속성을 update을 이용했었는데 운영서버와 개발서버 간의 문제가 간간히 발생했고, create 속성으로 두기에도 데이터가 계속해서 날라가는 단점이 있었다. validate 으로 두고 진행하니, 운영서버와 개발서버를 나누고 있는 상황에서 한 쪽에만 DDL, DML을 적용되는 실수가 발생할 수 있기에 이를 쉽게 관리하기 위해 사용했다. 또한, 버전 기록이 남아있어 변경 내역을 확인할 수가 있다는 장점이 있다. 적용법 build.gradle 의존성 추가 dependencies { implementation 'org.flywa..

    [Jenkins] 간략히보는 SonarQube와 Jenkins 연동하기

    간략히보는 SonarQube와 Jenkins 연동하기 EC2를 하나 파서 도커를 설치한다. sudo apt-get update && \ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \ sudo apt-key fingerprint 0EBFCD88 && \ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) st..

    [DB] Mysql Order By 쿼리 ONLY_FULL_GROUP_BY 문제 해결

    MySql Order By 쿼리 ONLY_FULL_GROUP_BY 문제 해결 MySql 에서는 Group By 사용 시에 필드에 집계함수만을 사용할 수 있게끔 하기 때문에 생긴 문제다. SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 입력해주자. REFERENCE https://stackoverflow.com/questions/23921117/disable-only-full-group-by

    [Nginx] 하나의 Nginx로 여러 upstream 처리하기

    하나의 Nginx로 여러 upstream 처리하기 events {} http { upstream app { server 앱_아이피; } upstream api-dev { server 데브서버_아이피; } upstream api { server 프로드서버_아이피; } # Redirect all traffic to HTTPS // server { // listen 80; // return 301 https://$host$request_uri; // } // // server { // listen 443 ssl; // location / { // proxy_pass http://app; // } // } server { listen 80; server_name api-dev.thankyou-for.com; r..

    [Jenkins] PR 라벨에 따른 젠킨스 빌드 유발 설정

    PR 라벨에 따른 젠킨스 빌드 유발 설정 현재 진행중인 프로젝트의 main 브랜치는 다음과 같이 client와 server 디렉토리로 나뉘게 된다. 각각 프론트와 백이다. 만약 단순히 해당 브랜치가 push 될 때에 빌드 유발을 하게끔 설정해놓는다면 client 디렉토리 내부의 코드가 변경이 생겨서 push 된다고 했을 때에 server를 담당하고 있는 젠킨스 아이템 또한 빌드 유발이 되어 불필요한 CI/CD가 일어나게 될 것이다. main 브랜치는 직접적인 푸쉬가 제한되고 오직 머지를 통해서만 변경이 가능하다는 가정하에, PR 라벨을 통한 효율적인 젠킨스 빌드 유발 설정에 대해 알아보겠다. 기본적인 젠킨스 사용법을 안다는 가정하에 진행하겠다. 보통 빌드 유발 설정 시에 위의 사진에 해당하는 GitHub..