분류 전체보기

· Spring
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: ..
· ELK
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..
· Spring
개발을하며 사용한 모든 오픈소스에 대한 라이센스를 고지해야 한다. 손수 작성하기엔 어려움이 있어 자동으로 작성하는 방법을 찾아보았고 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..
· Spring
도입한 이유 업무를 진행하던 중 로깅과 오류 모니터링을 해야 했다. ELK를 도입하고 싶지만 주어진 시간이 너무 없어서 도입하고 공부할 시간이 너무 없었다. 나는 도입하는 것도 중요하지만 어떻게 효율적으로 사용하고 고도화가 가능한지를 생각해보고 도입하는 것이 중요하다 생각돼서 간단한 Sentry를 이용해 로깅과 오류 모니터링을 구축하였다. Sentry는 여러 언어와 프레임워크를 지원하고 구축 방법도 매우 쉬워서 쉽게 로깅과 모니터링이 가능하다. 가격 정보를 간단하게 정리하면 아래와 같다. 더 자세한 정보는 홈페이지를 참고 바란다. Developer : 1개 계정 사용, 30일 데이터 보존, 오류 5,000개 제한, 트랜잭션 10,000개 제한 Team, Business : 무제한 계정 사용, 90일 데이..
· MongoDB
배열 연산자 배열을 다루는데 갱신 연산자를 사용할 수 있다. 배열은 일반적이고 강력한 데이터 구조다. 연산자는 리스트에 대한 인덱스를 지정할 수 있을 뿐 아니라 Set처럼 이중으로 쓸 수 있다. 요소 삽입 연산자 $push 연산자 $push는 배열이 이미 존재하면 배열 끝에 요소를 추가하고, 존재하지 않으면 새로운 배열을 생성한다. > db.cars.findOne() { "_id" : ObjectId("628f46057a32d396cf84a7ef"), "name" : "avante", "brand" : "hyundai" } > db.cars.updateOne( { _id: ObjectId("628f46057a32d396cf84a7ef") }, { $push: { options: { HUD: true, ..
· MongoDB
도큐먼트 갱신 도큐먼트 갱신은 원자적으로 이뤄진다. 갱신 요청 두 개가 동시에 발생하면 서버에 먼저 도착한 요청이 적용된 후 다음 요청이 적용된다. 따라서 여러 개의 갱신 요청이 빠르게 발생하더라도 결국 마지막 요청이 안전하게 처리된다. 기본 동작을 원치 않으면 도큐먼트 비저닝 패턴(The Document Versioning pattern)을 이용해야 한다. 도큐먼트를 데이터베이스에 저장한 후에는 updateOne, updateMany, replaceOne과 같은 갱신 메서드를 사용해 변경한다. updateOne updateOne은 필터 도큐먼트를 첫 번째 매개변수로, 변경 사항을 설명하는 수정자 도큐먼트를 두 번째 매개변수로 사용한다. > db.products.find() { "_id" : Object..
· MongoDB
도큐먼트 삽입 insertOne 도큐먼트를 삽입하려면 컬렉션의 insertOne 메서드를 사용한다. > db.loginLogs.insertOne({name: "devbeekei", loginDate: new Date()}) { "acknowledged" : true, "insertedId" : ObjectId("628f19887a32d396cf84a7e7") } > db.loginLogs.findOne({name: "devbeekei"}) { "_id" : ObjectId("628f19887a32d396cf84a7e7"), "name" : "devbeekei", "loginDate" : ISODate("2022-05-26T06:09:12.597Z") } 도큐먼트에 "_id"키가 추가되고 도큐먼트가 몽고D..
· MongoDB
다른 몽고DB 인스턴스에 연결 어떤 몽고DB 인스턴스든 셸을 연결할 수 있다. 다른 장비나 포트에 mongod를 연결하려면 셸을 시작할 때 호스트명, 포트, 데이터베이스를 명시해야 한다. 몽고DB 컨테이너를 하나 더 띄우고 다른 한쪽에서 접속을 해보자. 접속을 위해서는 IP를 확인해야 하므로 컨테이너의 IP를 알아내야 한다. $ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mongodb2 172.17.0.3 mongodb2 컨테이너의 IP는 172.17.0.3이다. 이제 다시 mongodb 컨테이너로 접속해 mongodb2 컨테이너 안에 몽고DB에 접속해보자. 접속할때는 mongo {IP}:{PORT}..
beekei
'분류 전체보기' 카테고리의 글 목록 (4 Page)