[Docker] 사설 DNS 서버 구축 및 리버스 프록시로 내부 웹 서버 연결하기 (Technitium, Nginx) + window 및 Ovpn dns 설정 방법
·
Infra/Docker
# 1. 개요 회사에서는 다양한 IP, Port를 활용한 서버들이 존재한다. 히지만 ip 와 port를 모두 기억하기란 어려운 법이다.이 ip, port 들을 저장하는 문서가 따로 있지만, 바로바로 접속할때 한달만 지나면 까먹게 된다.또한, 거의 내부망이니까 거의 같은 ip로 시작해서 바로 접속하기도 어렵다. ex) 10.0.~~ 이를 해결하기 위해 사설 dns 서버를 설치하고, nginx로 리버스 프록시하여 각각의 웹서버를 쉽게 접속하는 꿀팁?을 전하려고 한다. # 2. 사전 이해## DNS 접속 흐름DNS 접속 흐름은 다음과 같다. 컴퓨터 내에 있는 hosts 파일을 읽는다. (여기에 localhost와 127.0.0.1이 지정되어있음)로컬 DNS 캐시 확인설정된 DNS 서버를 통해서 domain과 ..
[IPv6] Spring boot로 ipv6 통신 해보기(+개념)
·
Infra/네트워크
# IPv6의 탄생 기존의 IPv4의 주소 고갈 문제를 해결하기 위해 128비트의 크기로 확장한 차세대 인터넷 프로토콜 주소이다. (43억 -> 거의 무한)실제로 aws에서는 원래 IPv4를 무료로 제공해주는데, 유료로 변경되는 경우도 있었다. # 사용 이유 matter라는 오픈소스 iot 보안 프로토콜을 커스텀을 하는데, discovery를 할 때 ip가 IPv6로 나오는 상황이 발생했다.여기서 확인된 ip로 통신을 해야 하기에, IPv6로 spring boot와 통신을 하도록 구현했다. # 개발 필자는 동적으로 url이 변경이 되어야 했기에, 기존의 spring cloud의 feign client 대신에 커스텀 http client를 개발했다.개인PC에서 테스트한 결과 IPv6로 통신이 잘 안되었다...
[Docker] 손쉽게 프록시 서버 관리하기 NPM(nignx proxy manager)
·
Infra/Docker
# 프록시 서버를 손쉽게 배포 및 관리하는 서비스 대개, 웹서비스를 구축하면, 프론트와 백엔드를 나누어 프록시 서버로 관리한다. 이 때, 도메인이 하나일때, 서브도메인으로 다양한 서버를 분리한다. 이럴 때 npm을 통해 손쉽게 분리 가능하다.또한, ssl인증서도 자동으로 업데이트 및 원클릭으로 설정을 해줘서 https를 손쉽게 설정 가능하다.그리고 세부 설정은 npm 내부 파일을 수정하면 가능하니, 좀 더 깊게 알아보면, 커스텀또한 가능하다. (대신 웹에서 설정하면 초기화 될 가능성 있음) # 배포docker로 배포를 간단하게 진행 할 수 있다.여기서 80, 443을 nginx에서 받아야하기 때문에 남겨두고, 81은 nginx 통합 관리 페이지 이다. docker network create npm-net..
Nginx 와 Apache의 차이 (Nginx vs Apache)
·
Infra/네트워크
현재 유지보수하는 레거시 프로젝트와 같은 테스트 환경을 사내망에서 구축하고 있다. 여기서 웹서버인 Apache를 활용해서 리버스 프록시하는 아키텍처를 활용하는데 왜 Apache 사용하는지와, Nginx 와 Apache 의 차이점이 무엇인지 생각해보자 Nginx와 Apache 는 둘다 오픈소스 webserver이다. # Apache Nginx의 구조 ## Apache의 구조Request가 생기면 그에 해당하는 프로세스를 활용한다. 이때 가용할 프로세스가 없으면 새로 프로세스를 추가해서 할당해야 한다. 그래서 Prefork MPM을 통해 부모 프로세스가 자식 프로세스를 미리 생성해 유휴 프로세스의 최소/최대 기준을 유지하도록 동적으로 수를 조절하여, 새로운 요청을 유휴 프로세스에 즉시 할당한다. 여기서 문제..
[DB] Tibero 배포 하는 법 (with. docker)
·
Infra
Tibero DB를 Docker로 배포하는 방법에 대해 알아보자# 먼저 tibero란 무엇인가?Tibero를 간단하게 말하자면 티맥스데이터에서 개발한 Oracle과 호환성 높은 한국에서 개발한 데이터베이스이다.장점은 오라클과 비슷하고, 오라클 유지비용의 가격이 절반이다.단점은,, 노코멘트 하겠다. # 배포 과정 ## 라이센스 발급 및 tibero7 압축파일 다운먼저 tibero를 쓰기 위해 license.xml을 발급 받아야한다. 처음에는 한달 정도 사용해볼 수 있는 무료 라이센스를 준다.그 후 tibero 설치를 위한 압축파일을 다운받고, 압축을 풀어줘야 한다.위 과정은 홈페이지에서 설명이 충분하기에 생략하겠다.https://docs.tmaxtibero.com/tibero/topics/installat..
[책] 도메인 주도 개발 시작하기(1)
·
Infra
# 도메인 모델 시작하기# 도메인은 여러 하위 도메인으로 구성된다.카탈로그 도메인- 고객에게 구매할 수 있는 상품 목록을 제공주문 하위 도메인- 고객의 주문을 처리한다. 여기서 특정 도메인을 위한 소프트웨어라고 해서 도메인이 제공해야 할 모든 기능을 직접 구현하는 것은 아니다. # 도메인 전문가와 개발자 간 지식 공유- 요구사항을 올바르게 이해하려면 개발자와 전문가가 직접 대화하는 것이다.- 이해관계자와 개발자도 도메인 지식을 갖춰야 한다."Garbage in Garbage out" # 도메인 모델## 객체 모델## 상태 다이어 그램# 도메인 모델 패턴## 아키텍처 구배송지 변경이 가능한지를 판단할 규칙이 주문 상태와 다른 정보를 함께 사용한다면OrderState만으로는 배송지 변경 가능 여부를 판단할 ..
[Infra] 로깅 처리를 위한 ELK 설정 (with spring)
·
Infra/네트워크
# 로그를 수집하면 생기는 이점1. 사용자 행동 분석 로그 데이터를 통해 사용자의 행동 패턴을 파악하고 이를 바탕으로 서비스 개선 및 마케팅 전략을 세울 수 있다.2. 오류 및 버그 추적 로그를 통해 시스템 내 발생한 오류나 문제를 확인하고 추적할 수 있어, 소프트웨어의 안정성과 품질을 개선할 수 있다.3. 성능 최적화 로그 데이터를 분석하여 데이터 베이스 작업, API 호출, 시스템 리소스 사용 등 시스템의 성능 상태를 파악하고, 이를 통해 성능 문제점을 찾아 수정할 수 있다.4. 보안 감시 로그를 통해 시스템 내의 비정상적인 활동, 해킹 시도, 인증 실패 등을 식별하고, 보안 취약점을 찾아낼 수 있다.이는 시스템 보안의 유지를 도울 뿐만 아니라, 사이버 공격에 대한 대응 역시 가능하게 한다. 모두 중..
[Infra] 시스템 메트릭 모니터링 구축 (with. spring)
·
Infra/네트워크
# 서버의 상태를 관리하기 위해 시스템 메트릭 모니터링을 구축한다.서비스의 상태, 성능, 문제점을 시각적으로 표현하여 실시간으로 모니터링 할 수 있는 인터페이스를 구축하자이를 통해 환경에서의 문제점을 식별할 수 있다. # Methric 수집 및 통합 도구1. Prometheus- pull 방식으로 methric을 수집하여, 오픈소스이다.- 많은 자료들이 존재하여 접근하기 쉽다.- 시계열 DB를 사용한다2. influx DB- 오픈소스를 제공하고, Sass도 제공한다.- 성능이 좋지만 자료가 적고 구성이 어렵다.3. datadog- SaaS제품으로 모니터링을 신경쓰지 않기 때문에 관리하기가 쉽다- 다만 비용적인 측면이 존재한다. 여기서 Prometheus를 활용하여 시스템 메트릭 데이터를 수집 및 저장하고..
[Jenkins] React, github, CI/CD 구축 with. nginx
·
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..
[Infra] 포워드 프록시와 리버스 프록시 차이점
·
Infra/네트워크
# 포워드 프록시와 리버스 프록시의 차이점포워드 프록시는 위 그림과 같이 클라이언트 측에서 사용되고, 리버스 프록시는 서버측에서 사용됩니다.차이점 요약 표구분포워드 프록시 (Forward Proxy)리버스 프록시 (Reverse Proxy)사용 위치클라이언트 측 (사용자)서버 측 (서비스 운영자)주요 목적익명성 유지, 인터넷 차단 우회서버 보호, 로드 밸런싱, 보안 강화IP 주소 노출웹사이트는 클라이언트 IP를 알 수 없음백엔드 서버는 클라이언트 IP를 알 수 있음사용 예시VPN, 특정 웹사이트 차단 우회, 익명 브라우징웹사이트 로드 밸런싱, SSL 처리 # 포워드 프록시란? 포워드 프록시는 클라이언트가 웹사이트에 접속할 때 중간에서 대신 요청을 보내주는 역할을 한다.이 과정에서 웹사이트는 클라이언트의 ..