반응형

개발 일지 54

Arthas 란

Arthas 란 알리바바 미들웨어팀이 오픈소스로 공개한 자바 진찰도구 요구사항 JDK 6 이상 Linix, Mac, Windows 설치 curl -O https://arthas.aliyun.com/arthas-boot.jar wget https://arthas.aliyun.com/arthas-boot.jar 실행 java -jar arthas-boot.jar 감지된 jvm을 선택한다 Arthas With Spring boot with docker 도커 컨테이너에서 실행되는 어플리케이션(JVM)에 접근하기 위해서는 컨테이너 내부에 arthas를 설치해야한다... jre만으로는 arthas가 정상작동 안하며 jdk를 설치해야한다.. 단지서버에서 가용되는 openjdk:11-jre-slim-buster (JR..

개발 일지 2022.11.25

자동화 공격이란

자동화 공격이란? 웹 어플리케이션에 정해진 프로세스에 자동화된 공격을 수행함으로써 자동으로 수많은 프로세스가 진행되는 취약점 예를 들어 게시판의 글을 수도없이 많이 남겨 정상적인 기능을 하지 못하도록 공격하는 것이다. 이 공격이 반복된다면 데이터베이스의 용량이 부족하여 서버의 과부화가 발생할 수 있다. 자동화 공격 대응 방안 데이터 등록이 일회성이 될 수 있도록 별도의 확인 값을 추가한다. 짧은 시간에 다량의 패킷량이 전송되므로 공격으로 방어할 수 있는 IDS/IPS 시스템을 구축한다. 캡챠 사용 확인 값 추가 방안 세션을 감시하며, 세션당 일회용 키를 추가 해당 키는 한번 사용되면 refresh되며 refresh된 키값을 client에게 전달 이를 통해 기본적인 자동화 공격에 대한 방어 가능 (단순 반..

개발 일지 2022.11.25

DID 란

DID란 탈중앙화 식별자 (Decentralized Identity, DID) 검증가능하고 탈중앙화된 디지털 신원을 위한 새로운 형식의 식별자 특징 (요구사항) 탈 중앙화 : 중앙 발행 기관의 부재 지속성 : 식별자는 지속적, 운영은 지속적이지 않음 암호로 검증 : 식별자에 대한 제어를 암호로 증명 분해성 : 식별자로 메타데이터를 검색할 수 있음 개인정보를 사용자 단말기에 저장 개인 정보 인증 시 필요한 정보만 골라서 제출 가능하도록 만든 시스템 발급기관 : 최초의 본인 확인 및 분산ID 발급정보를 저장하는 책임을 가짐 단말기(사용자) : 발급기관으로부터 받은 분산ID를 가지고, 각 서비스 이용기관에 분산ID를 제출하여 인증을 진행 이용기관 : 사용자에게 분산ID를 받아서 블록체인을 통해 해당 분산ID를..

개발 일지 2022.11.25

Spring TransactionEventListener

개요 Event 기반 구조로 개발을 할 때 가용할만한 기능 @EventListener Spring에서 제공하는 EventListener 이벤트를 publish하고, @EventListener 가 달린 메소드에서 자신의 condition에 맞는 이벤트일 시 수행한다. @TransactionalEventListener 기본적으로 event를 publishing하면 비동기로 이벤트가 발행된다. 주요 로직에서 이벤트 발행 후 오류가 발견되어 rollback이 필요할 시 이미 발행된 Event에 대해서는 rollback이 불가하다. 따라서 Transaction이 필요한 로직에서는 Event가 발행되지 않거나 실행이 안되어야한다. 원리 @Transaction에 종속적인 eventListener이다. 이벤트를 발행하..

개발 일지 2022.11.23

MDC 란

MDC란 Mapped Diagnostic Context 멀티 클라이언트 환경에서 다른 클라이언트와 값을 구별하여 로그를 추적할 수 있도록 제공되는 map ThreadLocal을 통해 구별할 수 있는 키 값을 저장하여 Thread가 살아있는 동안 해당 키값 활용 사실상 쓰레드안에서 공유되는 Map을 할당하여 사용하는 개념 Interface Singleton으로 생성됨 Map과 비슷하게 CRUD 인터페이스 제공 동작원리 MDC class 내부적으로 MDCAdapter라는 인스턴스를 singleton하게 가지고 있으며 해당 어댑터를 통해서 interface들을 제공 MDCAdapter public MDCAdapter getMDCA() { return new LogbackMDCAdapter(); } 기본적으로 ..

개발 일지 2022.11.23

QuerydslPredicate 란

개요 spring-data-commons 라이브러리에서 제공하는 기능 목적은 컨트롤러의 파라미터를 이용하여 간단하게 Querydsl 조건문을 생성 예시 parameter value QueryDSL predicate (in Controller) SQL member.name test1 member.name.eq("test1") SELECT .... FROM member WHERE name = 'test1' member.name test1 member.name.in("test1", "test2") SELECT .... FROM member WHERE name in ('test1', 'test2') member.name test2 동작 Flow QuerydslBindings 클래스 pathSpecs : 특정 k..

개발 일지 2022.11.23

Nginx vs HAProxy

HAProxy란 Reverse proxy 형태의 LB 동작원리 일반적인 reverse proxy 형태로 동작 event-driven 방식으로 동작 접속한 서버정보를 쿠키로 관리하여, 연결 되었던 서버로 계속 연결 고가용성 주요 Feature URL rewriting. PROXY Protocol support. Gzip compression. Supports caching. API Support. SPOE Support. gRPC Support. Offers advanced debugging and tracing features. Detailed logging. Multithreading. CLI for server management. Supports HTTP authentication. Dynamic ..

개발 일지 2022.11.23

OIDC 란

개요 OAuth2.0 (RFC6749) 프로콜의 확장판 OAuth2.0 프로토콜 중 Client가 End-User의 신원 확인을 보다 쉽게 할 수 있는 형태로 표준이 정해짐 OAuth2.0 표준 프로토콜은 Client가 사용자 토큰을 통해 제한적으로 Resource에 접근할 수 있으며, End-User의 신원에 대한 정보를 획득하는 표준이 없음 4가지 방식을 제공한다. Authorization Code 방식 Implicit 방식 Hybrid 방식 Third-Party 방식 (RP와 OP가 같을 시) 관련표준 SAML 2.0 : 2001년 OASIS에서 정의한 개방형 Authentication(인증) 및 Authorization(인가) 표준이며, 엔터프라이즈 애플리케이션의 SSO(Single Sign On..

개발 일지 2022.11.23

Logstash 란

개요 원작자는 Jordan Sissel 초기 개발 목적은 다양한 데이터 수집과 저장을 위해 개발된 프로젝트 Logstash가 출력 API로 ElasticSearch를 지원 이후 통합됨 개발언어는 JRuby로 JVM위에서 동작한다. 라이센스는 Apache 2.0을 따른다 FLow DataSource로 부터 데이터를 컬랙팅하여 뒤로 넘기는 파이프라인 역할을 한다. 다양한 종류의 DataSource에서 데이터를 받을 수 있으며, 다양한 application으로 데이터를 넘길 수 있는 interface를 제공한다. pipeLine 내부에서는 필터링 등 설정에 의한 비즈니스를 수행한다. LogStash 동작 원리 dataSource로 부터 설정된 이벤트 단위로 Queue에 입력받는다. 특정 모듈이 Queue로부터..

개발 일지 2022.11.23
반응형