Deployment – CI/CD

Application의 배포를 위해서 채택한 구조는 Github -> Jenkins -> Docker -> Kubernetes 입니다. 배포를 위한 예시는 Vue.js로 개발된 application으로, build 된 파일이 dockerfile을 통해 Nginx application으로 복사가 됩니다. Nginx의 configmap과 deployment는 미리 띄워놓은 상태입니다. 아래는 Nginx의 configmap과 deployment의 설정 파일입니다. 우선 Jenkins의 managed files에 파일들을 만들어 놓았습니다. .env: Github등을 통해서 외부에 노출하지 않을 데이터 .env.$phase: […]

CDN – 504 Handling

문제점 하나의 CDN farm에서 여러 origin을 캐싱할 때 처리 지연은 문제를 발생 시킵니다. 캐시 서버에서 miss가 발생해서 origin으로 부터 데이터를 가지고 올 때, origin이 부하가 심한 경우 응답처리가 늦어질 수 있습니다. 응답처리가 늦어지는데 계속해서 추가 요청이 들어오면 캐시 서버는 타임아웃이 발생할 때까지 소켓이 점유된 상태로 남게 됩니다. 요청이 많은 캐시 서버에서 이러한 현상이 지속될 경우 […]

Project – Monitoring Solution

Purpose System engineer에게 적합한 monitoring system 구축 서비스 그룹 내의 resource 비교 및 threshold 설정 기존 monitoring 시스템 통합 및 개선 개발 인력 분담을 통한 업무의 집중화 개선 Performance 개선 및 code refactoring 통한 향후 확장성 및 관리의 효율성 증대 Skill Grafana MongoDB Nginx Python Vue.js Role 초기 구성 설계 및 개발 Vue.js를 통한 front […]

Project – API Gateway

Purpose 서버를 효과적으로 관리하기 위한 여러 툴을 개발하게 되면서 권한의 필요성을 느낌 실제 개발자와 서버 관리자의 접근 권한 체계가 달라야 하기 때문 권한 체계를 개발하기 위해서는 session 인증 방식을 통해서 이루어지는 것이 가장 바람직한 구성이라고 생각하며 개발을 하기 시작 Skill Node.js, Express, PassportMongoDBPython, FastAPI Role API Gateway 필요성 인지 후, 자발적으로 기획 및 개발 Period […]

Nginx – Forward Proxy

Crawling을 통한 차단을 피하기 위해 proxy를 이용하던 도중 실제로 forward proxy가 어떻게 동작하고, 원하는 방향으로 동작하고 있는지를 확인하기 위하여 Nginx를 통해 구축했습니다. Forward proxy와 Reverse proxy에 대해서 간략하게 보면, Forward proxy는 target이 되는 URL을 client에서 직접 요청하는 것이 아니라 proxy server가 대신 요청을 하고, 그 결과를 client에 전달하는 형태입니다. 이 때, proxy server에 content를 caching […]

Memory – Analysis

Memory 정보 System의 총 memory 양과 사용 중인 memory의 양은 free 명령어를 통해서 확인이 가능합니다. free 명령어는 system의 memory와 swap 공간의 상태를 보여주기 위해서 사용하는 명령어입니다. Free 명령어의 memory field는 아래에 보이는 바와 같이 total, used, free, shared, buff/cache, avliable로 나뉘어져 있고, swap의 경우는 total, used, free로 구성됩니다. memory의 total field 값은 dmidecode -t memory를 […]