운영 중인 서비스는 Nginx를 리버스 프록시로 사용하고 있고, 백엔드 서비스들은 Docker Compose로 올라간다.nginx와 백엔드 서비스는 동일한 custom network를 사용하며, 컨테이너명으로 통신을 한다. 그런데 서비스가 다 정상적으로 뜬 상태에서도 간헐적으로 Nginx에서 backend 연결 실패가 발생했다. 시기 상 컨테이너가 올라온 지 얼마 안되어 발생할 수 있는 수준이 아니라, 안정적으로 서비스를 하고 있는데도 아주 자주 발생했다. connect() failed (111: Connection refused) while connecting to upstream 처음엔 "백엔드가 죽었나?" 했는데, 모든 컨테이너는 살아있었다. 죽어있었으면 운영도 안되었겠지... 리소스 부족이나 GC..

과거에 Git 태그를 푸시하면 Docker 이미지를 생성하고 자동으로 Nexus에 푸시하는 파이프라인을 구축한 적이 있다. 하지만 당시 우리 시스템은 Docker 기반이 아니었고, 특정 프로젝트에서만 Docker 이미지를 필요로 했기 때문에 자동 배포까지는 구현하지 않았다. 그러나 이번에 서버 이전을 진행하면서 여러 가지를 개선하는 과정에서, 서비스 운영을 Docker 기반으로 전환하게 되었다.일반적으로 CI/CD에서는 이미지 생성 및 푸시 후 자동으로 서버에 배포하는 방식을 많이 사용하는 것 같았다. 이는 개발 서버나 스테이징 환경에 적합하다고 생각되었고 운영 서버에서는 보다 신중한 배포가 필요하다고 판단했다.그래서 내가 구현하려는 방식은, Nexus에서 Docker 이미지 태그 목록을 가져와 특정 태..

Docker 프라이빗 레지스트리를 구축하고 GCP 로드 밸런서와 Nginx를 활용하여 서비스 하는 중 로그인이 안되는 현상이 발생했다. 1. 환경 구성GCP 로드 밸런서(L7)VM 인스턴스: Nginx와 Docker Registry가 Docker 컨테이너로 실행트래픽 흐름:클라이언트는 https://도메인 로 접근로드 밸런서는 SSL 종료 후, 내부적으로 HTTP(포트 80)로 VM의 Nginx에 요청을 전달Nginx는 해당 요청을 Docker Registry로 프록시Nginx 설정 server { listen 80; server_name 도메인; location / { proxy_pass http://nexus:8081; proxy_set_heade..

Git 저장소를 AWS에서 GCP로 이전하면서 여러 가지 문제를 겪었다. 특히 대용량 저장소 이전에서 예상치 못한 난관이 많았고, 다양한 방법을 시도해 해결했다. 이번 글에서는 처음 시도한 방법과 실패한 이유, 그리고 최종적으로 성공한 방법을 정리해보려 한다. Git 저장소 이전 방법1. 기본적인 Git 이전 방법가장 먼저 아래와 같은 방식으로 저장소를 이전했다.1) 기존 저장소를 클론 (mirror 방식)git clone --mirror 2) 새로운 저장소에 푸시cd .gitgit remote set-url origin git push --mirror하지만... 대용량 저장소에서는 실패! 😭push 실패 원인과 해결 방법❌ 실패 원인: push 중 RPC 에러 발생파일 크기가 크면 아래와 같은 에..

AWS에서 GCP로 이전하는 작업 중에서 Bucket을 어떻게 옮겨야하나 고민이 많았다. 프로그램을 작성해야하나 고민 했지만 GCP에서는 손쉽게 이전 할 수 있는 방법을 제공하고 있다.개인적으로 GCP의 문서들은 보기 어렵다고 생각되는데 이번 가이드 만큼은 아주 쉬워서 따라하기에 무리가 없었다.1. AWS 작업하기1.1 CloudFront 배포 생성 🌐 🌟🌟AWS CloudFront는 콘텐츠 전송 네트워크(CDN, Content Delivery Network) 서비스로 전 세계에 분산된 엣지 로케이션(Edge Location)을 활용해서 웹 콘텐츠(이미지, 동영상, HTML, CSS, API 응답 등)를 빠르고 안전하게 전달하는 역할을 한다. CloudFront를 이용해 S3 데이터를 배포하려면 아..

SSH를 통해 서버에 접속 하려고 할 때 permissions 0664 for '.pem' are too open 나는 경우가 있다. 👀 이게 무슨 뜻일까?key 파일이 너무 오픈되어있다..? 무슨말인가 보니 프라이빗 키의 권한이 너무 개방적이어서 SSH가 보안상의 이유로 키를 무시하는 상황이다. 🔧 해결 방법이런 경우 해당 키 파일의 권한을 변경 해주면 된다.해당 키의 소유자만 해당 키를 읽을 수 있도록 변경해주었다.chmod 400 /var/jenkins_home/secrets/키파일.pem ✅ 이제 다시 접속해 보면?정상적으로 접속되는 걸 확인할 수 있다! 🚀

로그인 할 때 대소문자 구분 없이 로그인이 되는 사이트를 본 적이 있을 것이다. 그럴 때 마다, 사용자로 부터 받은 아이디를 모두 소문자나, 대문자로 치환하여 DB에 전달하는게 아닐까 라는 생각을 한 적이 있다.(collate가 모르는 사람이 구현을 했다면 이렇게 구현을 하지 않았을까..? 이렇게 생각 한 나처럼..) 그러나 collate를 알고 있다면 전혀 그럴 필요가 없다는 사실..! Collate란?문자 집합에 포함된 문자들을 어떻게 비교하고 정렬할지를 정의하는 콜레이션을 설정 하는 키워드- 문자열 데이터를 비교 할 때 대소문자를 구분할지 여부- 문자 간 정렬 순서를 정의- 언어별 특수 문자 처리 방식을 지원 Collate의 구조예) utf8mb4_general_ci- utf8mb4 : 문자 집합-..

WebClient는 Spring WebFlux에서 HTTP 요청을 비동기 방식으로 처리하는 강력한 도구이다. 비동기 처리는 주로 리액티브 프로그래밍에서 사용되며, 비동기 요청을 보내고 응답을 기다리는 동안 다른 작업을 병렬로 처리할 수 있게 한다. * 동기와 비동기/ 블럭과 넌블럭 차이 이해하기https://musma.github.io/2019/04/17/blocking-and-synchronous.html 동기와 비동기, 그리고 블럭과 넌블럭무릇 모든 개발자들, 아니 비단 개발자가 아니라 할지라도 컴퓨터 관련 산업계 종사자들이라면 오다 가다 한 번씩은 꼭 들어보고, 또 익혔음직한 내용이겠습니다. 이름하야, 동기(Synchronous)와 비musma.github.io 하지만 WebClient를 사용방법..
- Total
- Today
- Yesterday
- tomcat
- softeer
- 전자정부프레임워크
- softeer java
- java
- 아파치카프카
- 자바스크립트
- 현대오토에버
- Spring
- Docker
- 코딩테스트
- centos
- javascript
- mysql
- 톰캣
- 자바코테
- Kubernetes
- react
- Linux
- 쿠버네티스
- nginx
- 도커
- 자바
- 코테
- 스프링
- 현대코테
- 오토에버코테
- springboot
- 리액트
- 현대
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |