만약 도커로 데이터베이스 컨테이너를 실행해 애플리케이션을 구동한다 했을 때 해당 데이터베이스 컨테이너가 삭제된다면 데이터도 삭제가 되고 복구할 수 없게 된다. 이런 경우에 데이터를 유지를 위한 몇 가지 방법이 있는데 그중 가장 활용하기 쉬운 방법이 볼륨 활용이다. 볼륨을 활용하는 방법은 여러 가지가 있다. 1. 호스트 볼륨 공유 호스트 볼륨 공유는 호스트화 컨테이너의 볼륨을 공유하는 것이다. 만약 MySQL 컨테이너를 사용해 애플리케이션을 구동한다 했을 때 호스트와 MySQL에서 데이터를 저장하는 볼륨을 공유할 수 있다. $ docker run -d \ --name mysql \ -e MYSQL_DATABASE=sample \ -e MYSQL_ROOT_PASSWORD=password \ -v /home/..
분류 전체보기
반응형
명확함이 친절한 것이다. 우리는 대부분 명확하고 직설적인 표현을 회피하려는 경향을 띤다. 실제로는 불친절하고 부당하게 행동해야 할 때, 오히려 겉으로는 친절하게 말하기도 한다. 상대의 기분을 달래려는 반쪽자리 진실이나 허튼소리는 불친절한 행위이고, 결국 우리 자신이 편하기 위한 수단일 뿐이다. 기대치에 미치지 못했다는 이유로 동료를 비난하고 탓하는 것도 인정 없는 것이다. 뒷담화도 마찬가지 불명확한 말과 행동은 불친절한 것이다. 감추고 싶은 모습을 마주할 용기 대부분의 사람들은 수치심때문에 두려움에 대한 진실을 누구한테도 털어놓고 싶지 않아 한다. 두려움에 휩싸이거나 어떤 감정이 자기 방어를 재촉하면, 예측 가능한 순서에 따라 우리는 갑옷을 한 조각씩 조립해 간다. 그 때문에 더 큰 의도를 제대로 전달하..
우리는 사회생활에도 해결하기 힘든 여러 문제와 직면하고, 끝없는 혁신을 요구받으며 살아간다. 복잡하고 급속하게 변하는 환경에서 리더가 성공하기 위해서는 리드하는 방법도 달라져야 한다. 어떤 리더가 좋은 리더고 성공할 수 있는 리더일까? 서점에서 리더의 용기라는 책을 들고 앞부분을 잠깐 읽어보았다. 나는 사회생활 속 리더가 아니고 리더가 될 능력도 안되지만 궁금하기도 하고 미래의 리더를 위해 이 책을 읽으며 기억해야 하는 부분을 정리하기로 했다. 길을 막고 방해하는 것이 길이 된다. 리더가 성공하기 위해선 더 대담하고 용기가 있는 문화가 있어야 한다. 수치심은 용기에 대한 거대한 장애물이자 끊을 수 없는 관계이다. 리더들이 조직의 원활한 운영을 방해하는 요인으로 제시한 행동이나 문화를 10가지로 정리하면 ..
Application에 개발자가 예상하지 못한 오류가 발생하면 사용자의 문의보다 빠르게 발생과 원인을 알 수 있도록 슬랙 알림 설정을 해보자. Application은 Spring Boot로 로그는 Logback을 사용해서 간단한 설정으로 Slack 알림을 받아볼 수 있다. 1. Slack Webhook 앱 생성 슬랙 사이드 바 하단에 앱 추가 버튼을 클릭 해 WebHooks 앱을 추가한다. 생성된 웹후크 URL을 복사 2. Logback Slack Appender 의존성 추가 및 Logback 설정 build.gradle dependencies { ... implementation group: 'com.github.maricn', name: 'logback-slack-appender', version: ..
Filebeat는 로그 데이터를 전달하고 중앙화하기 위한 경량의 Producer이다. Filebeat는 지정한 로그 파일 또는 위치를 모니터링하고 로그 이벤트를 수집해 Logstash로 전달해주고, 가공 작업을 거쳐 Elasticsearch로 보내주고 이 결과를 Kibana로 볼 수 있도록 구축할 예정이다. 1. Application 로그 수집 먼저 Spring Boot Application에서 로그를 수집해야 한다. 나의 경우는 AOP와 Logback을 통해 API 로그와 오류 로그만 수집하도록 설정하였다. 1-1. AOP 설정 LoggingAspect.java @Aspect @Component @RequiredArgsConstructor public class LoggingAspect { privat..
개발을하며 사용한 모든 오픈소스에 대한 라이센스를 고지해야 한다. 손수 작성하기엔 어려움이 있어 자동으로 작성하는 방법을 찾아보았고 Gradle를 사용하고 있다면 Gradle License Report 플러그인을 사용해서 라이센스를 고지하는 파일을 만들 수 있다. 사용법 build.gradle에 플러그인을 추가한다. 사용하고 있는 gradle 버전에 따라 사용하는 플러그인 버전이 다르다. Gradle 7+ plugins { id 'com.github.jk1.dependency-license-report' version '2.0' } Gradle 6.x plugins { id 'com.github.jk1.dependency-license-report' version '1.17' } 플러그인을 추가했다면 아..
업무 상 Docker와 Nginx를 통해 Blue Green 무중단 배포를 구축하려고 한다. OS는 Centos 7.x 기준이고 Application은 Spring Boot 기준으로 정리하였다. 현재 서버는 NCP에 Server를 사용하고 있고 Container Registry에 이미지를 저장해 사용하고 있다. 1. Centos에 Nginx 설치 먼저 yum 업데이트한다. $ sudo yum update 업데이트가 다 되었으면 yum 저장소에는 nginx가 없기 때문에 외부 저장소를 추가해서 설치해야 한다. $ sudo vi /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basea..
여러 기술들을 테스트를 하기 위해 Docker로 Centos나 Ubuntu를 설치하는 상황이 계속되다보니 항상 그때마다 찾아보기 귀찮아서 정리를 해보려고 한다. 1. Centos 이미지 pull 및 컨테이너를 실행 $ docker run --privileged -d --name centos centos:7 /sbin/init 버전과 컨테이너 명은 원하는 버전으로 바꾸면 된다. $ docker ps 2. centos 컨테이너 접속 $ docker exec -it centos bash 3. yum 업데이트 및 필요 Util 설치 $ yum update $ yum install yum-utils 4. Docker repository를 시스템에 등록 $ yum-config-manager --add-repo ht..
도입한 이유 업무를 진행하던 중 로깅과 오류 모니터링을 해야 했다. ELK를 도입하고 싶지만 주어진 시간이 너무 없어서 도입하고 공부할 시간이 너무 없었다. 나는 도입하는 것도 중요하지만 어떻게 효율적으로 사용하고 고도화가 가능한지를 생각해보고 도입하는 것이 중요하다 생각돼서 간단한 Sentry를 이용해 로깅과 오류 모니터링을 구축하였다. Sentry는 여러 언어와 프레임워크를 지원하고 구축 방법도 매우 쉬워서 쉽게 로깅과 모니터링이 가능하다. 가격 정보를 간단하게 정리하면 아래와 같다. 더 자세한 정보는 홈페이지를 참고 바란다. Developer : 1개 계정 사용, 30일 데이터 보존, 오류 5,000개 제한, 트랜잭션 10,000개 제한 Team, Business : 무제한 계정 사용, 90일 데이..
배열 연산자 배열을 다루는데 갱신 연산자를 사용할 수 있다. 배열은 일반적이고 강력한 데이터 구조다. 연산자는 리스트에 대한 인덱스를 지정할 수 있을 뿐 아니라 Set처럼 이중으로 쓸 수 있다. 요소 삽입 연산자 $push 연산자 $push는 배열이 이미 존재하면 배열 끝에 요소를 추가하고, 존재하지 않으면 새로운 배열을 생성한다. > db.cars.findOne() { "_id" : ObjectId("628f46057a32d396cf84a7ef"), "name" : "avante", "brand" : "hyundai" } > db.cars.updateOne( { _id: ObjectId("628f46057a32d396cf84a7ef") }, { $push: { options: { HUD: true, ..