분류 전체보기

# RSA-256는 단방향 암호화 알고리즘해싱을 통해 암호화를 진행한다.여기서 해싱은 임의의 길이의 데이터를 고정된 길이의 값으로 바꾸는 과정 즉, 매핑하는 과정을 '해싱'이라 하며 해싱된 결과는 해싱값이라고 부른다. 해싱된 값은 복호화가 거의 불가능에 가깝지만, 여기서 고려해야 할 점은 `동일한 메시지는 동일한 다이제스트`를 갖는다는 점이다. 만약 여러분이 해커라고 가정해볼 때 해싱된 메시지의 원문을 얻기 위해서 가장 편한 방법은 무엇일까? 그것은 바로 그동안 해커들이 여러 값들을 대입해보며 얻었던 다이제스트들을 모아놓은 리스트에서 찾아보는 것이다. 이러한 다이제스트들의 테이블을 우리는 레인보우 테이블(Rainbow Table) 이라고 한다. 사용자가 123456 이라는 비밀번호를 사용했다고 가정해보자..
# 도메인 모델 시작하기# 도메인은 여러 하위 도메인으로 구성된다.카탈로그 도메인- 고객에게 구매할 수 있는 상품 목록을 제공주문 하위 도메인- 고객의 주문을 처리한다. 여기서 특정 도메인을 위한 소프트웨어라고 해서 도메인이 제공해야 할 모든 기능을 직접 구현하는 것은 아니다. # 도메인 전문가와 개발자 간 지식 공유- 요구사항을 올바르게 이해하려면 개발자와 전문가가 직접 대화하는 것이다.- 이해관계자와 개발자도 도메인 지식을 갖춰야 한다."Garbage in Garbage out" # 도메인 모델## 객체 모델## 상태 다이어 그램# 도메인 모델 패턴## 아키텍처 구배송지 변경이 가능한지를 판단할 규칙이 주문 상태와 다른 정보를 함께 사용한다면OrderState만으로는 배송지 변경 가능 여부를 판단할 ..
# 로그를 수집하면 생기는 이점1. 사용자 행동 분석 로그 데이터를 통해 사용자의 행동 패턴을 파악하고 이를 바탕으로 서비스 개선 및 마케팅 전략을 세울 수 있다.2. 오류 및 버그 추적 로그를 통해 시스템 내 발생한 오류나 문제를 확인하고 추적할 수 있어, 소프트웨어의 안정성과 품질을 개선할 수 있다.3. 성능 최적화 로그 데이터를 분석하여 데이터 베이스 작업, API 호출, 시스템 리소스 사용 등 시스템의 성능 상태를 파악하고, 이를 통해 성능 문제점을 찾아 수정할 수 있다.4. 보안 감시 로그를 통해 시스템 내의 비정상적인 활동, 해킹 시도, 인증 실패 등을 식별하고, 보안 취약점을 찾아낼 수 있다.이는 시스템 보안의 유지를 도울 뿐만 아니라, 사이버 공격에 대한 대응 역시 가능하게 한다. 모두 중..
# 서버의 상태를 관리하기 위해 시스템 메트릭 모니터링을 구축한다.서비스의 상태, 성능, 문제점을 시각적으로 표현하여 실시간으로 모니터링 할 수 있는 인터페이스를 구축하자이를 통해 환경에서의 문제점을 식별할 수 있다. # Methric 수집 및 통합 도구1. Prometheus- pull 방식으로 methric을 수집하여, 오픈소스이다.- 많은 자료들이 존재하여 접근하기 쉽다.- 시계열 DB를 사용한다2. influx DB- 오픈소스를 제공하고, Sass도 제공한다.- 성능이 좋지만 자료가 적고 구성이 어렵다.3. datadog- SaaS제품으로 모니터링을 신경쓰지 않기 때문에 관리하기가 쉽다- 다만 비용적인 측면이 존재한다. 여기서 Prometheus를 활용하여 시스템 메트릭 데이터를 수집 및 저장하고..
· Infra/CICD
# 프론트 코드 자동 배포 구축github에 커밋을 할 때마다 자동으로 서버에 배포되도록 설정하려고 한다.먼저 jenkins가 설치되어야 한다. 이 부분은 나중에 따로 블로깅하도록 하겠다. # Github 설정## docker 파일 추가react 폴더 아래(src폴더와 같은 위치에)에 dockerfile을 추가한다.eblog-reader└─src└─public└─Dockerfile# base image 설정(as build 로 완료된 파일을 밑에서 사용할 수 있다.)FROM node:22-alpine as build# 컨테이너 내부 작업 디렉토리 설정WORKDIR /app# app dependencies# 컨테이너 내부로 package.json 파일들을 복사COPY package*.json ./# pac..
# 사용한 이유필자는 React를 사용해본 경험이 있지만, 앱을 개발하고 싶었다.네이티브 앱으로 새로 배우는 건 시간이 오래걸리기도 하고, 빠르게 배포해서 내가 사용하는 게 목적이기에, React의 pwa 기능으로 웹앱을 구축하기로 하였다. # pwa 구축 과정## 1. PWA React 애플리케이션 생성컴파일 단계에서 에러를 잡는 안정성을 도입하기 위해 typescript로 개발 환경을 설정하였다.// typescriptnpx create-react-app pwa-react --template cra-template-pwa-typescript ## 2. service worker 등록오프라인에서 앱을 구동시킬 수 있도록 설정하는게 목표이기 때문에 service worker를 등록하였다.- index.t..
# 포워드 프록시와 리버스 프록시의 차이점포워드 프록시는 위 그림과 같이 클라이언트 측에서 사용되고, 리버스 프록시는 서버측에서 사용됩니다.차이점 요약 표구분포워드 프록시 (Forward Proxy)리버스 프록시 (Reverse Proxy)사용 위치클라이언트 측 (사용자)서버 측 (서비스 운영자)주요 목적익명성 유지, 인터넷 차단 우회서버 보호, 로드 밸런싱, 보안 강화IP 주소 노출웹사이트는 클라이언트 IP를 알 수 없음백엔드 서버는 클라이언트 IP를 알 수 있음사용 예시VPN, 특정 웹사이트 차단 우회, 익명 브라우징웹사이트 로드 밸런싱, SSL 처리 # 포워드 프록시란? 포워드 프록시는 클라이언트가 웹사이트에 접속할 때 중간에서 대신 요청을 보내주는 역할을 한다.이 과정에서 웹사이트는 클라이언트의 ..
WireGuard vs OpenVPN 차이점특징OpenVPNWireGuard속도준수하지만 WireGuard보다는 느림매우 빠르며 OpenVPN 능가하는 속도를 자랑전송 계층UDP와 TCP를 모두 지원, TCP 443 포트로 구성 가능검열이 심한 국가에서도 우회 가능UDP만 지원, TCP 443 포트 사용 불가검열 우회 어려움호환성더 많은 기기 및 운영 체제와 호환됨거의 모든 VPN이 사용ChaCha20Poly1305 암호화 알고리즘 사용전용 하드웨어 지원 제한적, 점차 개선됨키 교환TLS/SSLCurve25519암호화AES와 같은 안정적인 암호화와 최신 암호화(ChaCha20Poly1305) 모두 지원높은 유연성최신 암호화 방식 사용으로 보안성 높음다만 OpenVPN 방식만큼 오랜 검증 기간 거치지 않음..
· DBMS/MySQL
필자는 docker로 mysql-container를 열어서 사용했다.아래의 순서대로 mysql-container에 접속한 후, 사용자 목록을 확인하고, spring boot에서 연결할 sql의 유저를 추가한다. 먼저 mysql docker 환경에 접속한후, root로 접속한다.docker exec -it mysql-container /bin/bashmysql -u root -p 그 후 mysql을 사용하고, 어떤 유저가 존재하는 지 확인한다.use mysql;select user, host from user; 사용자를 만든다. (필자는 jamjam으로 만들었다.)create user 'jamjam'@localhost identified by '${password}'; 이 후 jamjam에게 모든 data..
Service단에 @Transactional(readOnly = true)프로젝트를 진행하며 Transactional(readOnly = true)를 굳이 왜 붙이는 지 궁금해서 찾아 보았다.@Service@RequiredArgsConstructor@Transactional(readOnly = true)public class RoomService {일반적으로, 조회용 메서드에 대해서는 readOnly를 설정함으로써 성능상 이점을 얻을 수 있다.JPA - DirtyChecking와의 연관트랜잭션이 Commit 될 때, 초기 상태의 정보를 가지는 Snapshot 과 Entity의 상태를 비교하여 변경된 내용에 대해 update query를 생성해 쓰기 지연 저장소에 저장한다.그 후, 일괄적으로 쓰기 지연 저..
ckm7907
'분류 전체보기' 카테고리의 글 목록