일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- CKA 기출문제
- CKA
- 코틀린 코루틴의 정석
- CloudWatch
- Java
- Pinpoint
- kotlin coroutine
- Linux
- 티스토리챌린지
- kotlin
- mysql 튜닝
- aws
- 기록으로 실력을 쌓자
- PETERICA
- 공부
- go
- tucker의 go 언어 프로그래밍
- APM
- AWS EKS
- Kubernetes
- 정보처리기사 실기 기출문제
- 오블완
- minikube
- AI
- Elasticsearch
- docker
- golang
- 정보처리기사실기 기출문제
- Spring
- kotlin querydsl
- Today
- Total
목록전체 글 (863)
피터의 개발이야기
ㅁ 들어가며 Nginx를 블루그린 배포, 인증서 설치 등 일부 기능에 대해서만 사용하였다. 최근 Nginx 보안 검수와 캐싱기능을 이용한 서버 부하 감소 방법을 진행하면서 Nginx에 대해서 좀 더 자세히 배울 수 있었다. 부분적으로 알고 있던 지식을 정리하고자 한다. 이 글에서는 Nginx의 기본 이해와 주요 기능을 정리하였다. ㅁ Nginx란 무엇인가? Nginx는 고성능의 오픈 소스 웹 서버 소프트웨어로, 정적 콘텐츠 제공 및 리버스 프록시, 로드 밸런싱 등 다양한 역할을 수행한다. 2004년 이고르 시쇼브(Igor Sysoev)에 의해 개발되었으며, 비동기 이벤트 기반 아키텍처를 통해 높은 처리량과 낮은 리소스 사용을 자랑한다.Apache와 달리 스레드 기반이 아닌 비동기 방식으로 동작하여 대규..
ㅁ 들어가며[Nginx] NGINX에서 정적 파일 캐시 설정하는 방법을 알아보면서 HTTP 헤더의 확인이 필요하였다. ㅁ 헤더만 보기 (-I 옵션)$ curl -I http://example.comHTTP/1.1 200 OKContent-Type: text/htmlETag: "84238dfc8092e5d9c0dac8ef93371a07:1736799080.121134"Last-Modified: Mon, 13 Jan 2025 20:11:20 GMTCache-Control: max-age=1190Date: Sun, 09 Mar 2025 14:46:37 GMTConnection: keep-alive ㅁ 헤더와 본문 함께 보기 (-i 옵션)$ curl -i http://example.comHTTP/1.1 200 ..
ㅁ 들어가며지난 글, [Nginx] NGINX 설정 파일의 구조와 사용법 - 캐시 설정 (정적 파일)에서 캐시설정 방법을 공부하였다. NGINX를 이용하여 HLS(HTTP Live Streaming) 스트리밍 캐싱을 설정하는 방법을 정리해 보았다. ㅁ HTTP 라이브 스트리밍이란? HLS(HTTP 라이브 스트리밍)는 Apple이 개발한 널리 사용되는 비디오 스트리밍 프로토콜이다. 비디오 혹은 오디오 파일을 작은 HTTP 파일 조각으로 나누어 전송하며, 주문형 스트리밍과 라이브 스트리밍 모두 지원한다. .m3u8 파일(재생 목록)과 .ts 파일(비디오 세그먼트)을 사용하는데, 클라이언트는 m3u8 파일을 먼저 다운로드하고, 이를 통해 ts 파일들을 순차적으로 요청하여 재생한다. HLS의 이러한 특성으로..
ㅁ 들어가며Spring Boot에서 application.yaml 파일을 사용하여 base-info를 지정하고 프로파일에 따라 다르게 설정하는 과정에서 헷갈리는 부분이 있었다. Spring Boot 설정 시 프로파일에 따라 설정 로드 우선 순위가 있었다. 단일 파일에서 active profile에 따른 선택적 설정방법과 application.yaml과 application-{profile}.yaml이 모두 존재할 경우 설정의 우선 순위에 대해서 정리하였다. 예를 들어 base-info를 기준으로 설명하였다. 핵심프로파일별 설정 파일은 기본 설정 파일보다 항상 우선적으로 적용되며, 기본 정보에 오버라이딩하여 최종적으로 active profile에 따른 설정을 우선 시 한다. ㅁ active profil..
ㅁ 들어가며 로그정리가 필요한 서버가 발생하였다. Cronjob으로 할 수 있지만, 이력 관리를 위해 Jenkins Pipeline으로 쉘 스크립트를 실행하여 로그 정리를 하기로 하였다. 이전 글인, [Jenkins] pipeline에서 SSH Agent를 이용한 원격서버 관리방법에서 Jenkins에서 원격 서버에 접속하여 쉘 스크립트를 실행하는 과정을 정리하였는데, 이를 이용하여 젠킨스에서 배치 작업을 설정하는 방법을 정리하였다. ㅁ Jenkins Pipeline 구성ㅇ "새로운 Item" -> "Pipeline" 선택 ㅁ 빌드 주기 설정ㅇ Build periodically을 선택하여 빌드 주기를 설정한다. ㅇ H 0 * * * → 매일 자정 실행 ㅁ Pipeline script 작성pipeline ..
ㅁ 들어가며 [Nginx] NGINX 기설 설정 파일의 구조와 사용법 - 캐시 설정 (정적 파일)을 정리하면서 캐싱기능에 대해서 알게 되었다. 웹사이트 성능을 높이려면 정적 파일(이미지, CSS, JS 등)에 대한 캐시 설정이 필수적이다. NGINX에서는 다양한 방법으로 캐시를 설정할 수 있으며, 적절한 캐시 정책을 적용하면 페이지 로딩 속도를 향상시키고 서버 부하를 줄일 수 있다. 이번 글에서는 NGINX에서 정적 파일 캐시를 설정하는 방법을 정리하였다. 주로 NGINX Caching 설정 가이드을 인용하여 작성하였다.ㅇ 정적 파일 캐시?ㅇ NGINX Caching 설정방법ㅇ NGINX Caching 추가 설정ㅇ NGINX Caching 컨트롤 방법ㅇ NGINX 캐시 설정 적용 및 테스트 ㅁ 정적 ..
ㅁ 들어가며 보안점검을 받으면서 Nginx의 설정파일을 많이 공부하게 되었다. 설정 파일의 구조와 그 의미를 이해해야지 보안조치사항에 대응을 할 수 있다. 이번 글에서는 nginx의 config를 구성하는 방법을 정리하였다. ㅁ NGINX 설정 파일 위치ㅇ 기본적으로 /etc/nginx/nginx.conf에 위치하지만, OS 및 설치 방식에 따라 다를 수 있다.ㅇ 개별적인 서버 블록 설정은 /etc/nginx/conf.d/*.conf 또는 /etc/nginx/sites-available/에 있을 수 있다. ㅁ NGINX 설정 파일 기본 구조user nginx; # 실행 사용자 지정worker_processes auto; # 사용 가능한 CPU 코어 수에 맞게 설정events { worker..
ㅁ 들어가며 젠킨스 빌드 중 Docker 컨테이너가 먹통이 되어서 원인을 찾고 있었다. docker logs, stop, rm -f, kill 명령어를 사용하였지만, 아무것도 통하지 않았다. 이런 경우 Docker 데몬 자체의 문제이기 때문에 데몬의 로그를 확인하여 Docker 시스템 전반의 문제을 파악하야 한다. Docker 데몬 로그를 확인하는 방법은 운영 체제와 설정에 따라 다르다. ㅁ Docker 데몬 로그 확인 방법리눅스journalctl -xu docker.serviceㅇ journalctl 명령어 사용하여 Docker 서비스와 관련된 로그를 확인할 수 있다. OSLog Locationrocky centOS/var/log/messagesUbuntu나 Debian/var/log/syslogㅇ..
ㅁ 들어가며ㅇ Tucker의 GO 언어 프로그래밍 책을 보고 정리한 글입니다.ㅇ 변수가 갖는 속성(이름, 값, 타입, 메모리 주소)과 사용법을 정리한다.ㅁ 변수란?변수는 프로그램에서 값을 저장하는 메모리 공간이다.var name int = 10ㅇ var : 변수 선언부ㅇ name : 변수명, 메모리 시작 주소ㅇ int : 타입, 메모리에 int 타입만큼의 공간을 할당.ㅇ 10 : 초기 데이터ㅁ 변수의 속성ㅇ 이름: 프로그래밍에서 이름을 통해 직관적으로 메모리 공간에 접근 할 수 있다.ㅇ 값: 변수가 저장된 값ㅇ 주소: 변수가 저장된 메모리의 시작주소이다.ㅇ 타입: 변수의 형태를 정의함. 정수,실수, 문자열 등의 다양한 타입들이 있었다.ㅁ 올바른 변수명ㅇ 문자나 _로 시작하고 다른 특수문자를 포함할 수 없..
ㅁ 들어가며ㅇ Tucker의 GO 언어 프로그래밍 책을 보고 정리한 글이다.ㅇ 1장, Go언어의역사와특징을살펴보고, HelloGoWorld코드를 작성한다. ㅁ GO 역사ㅇ 2009년11월10일 세상에 공개ㅇ 홈페이지주소ㅇ 온라인 Go 언어컴파일러 ㅇ GO 언어의 풀 리퀘스트가 지속적으로 증가하고 있다.ㅇ JAVA 개발자인 나도 현재 GO를 사용 중이며, 대세에 맞추어 가는 중이기도 하다. ㅁ GO 언어의 특징개념설명클래스클래스는 없지만, 메서드를 가지는 구조체를 지원상속상속을 지원하지 않음메서드구조체가 메서드를 가질 수 있음인터페이스상속이 없지만 인터페이스는 있음익명 함수함수 리터럴이라는 이름으로 제공GCGC 제공함포인트메모리 주소를 가리키는 포인트 제공제네릭 프로그래밍제네릭 프로그래밍은 1.8부터 지원..
ㅁ 들어가며 Https 구현을 위해 Nginx를 사용 중인데, 보안점검 시 eol로 인해 업그레이드 지시를 받았다. Nginx의 버전 관리 체계를 정리하였다. ㅁ 버전 관리 체계오픈소스 NGINX 프로젝트는 메인라인과 안정판의 두 가지 브랜치를 유지 관리한다. ㅇ mainline Mainline은 최신 기능과 버그 수정이 추가되는 활성 개발 브랜치이다. 버전 번호의 두 번째 부분에 홀수로 표시된다. ex) 1.21.0 ㅇ stable Stable은 심각도가 높은 버그에 대한 수정을 받지만 새로운 기능으로 업데이트되지 않는다. 버전 번호의 두 번째 부분에 짝수로 표시된다. ex) 1.22.0 Stable 브랜치는 수명 주기 동안 새로운 기능을 받지 않으며 일반적으로 중요한 버그 수정을 위해 하나 또는 두..
ㅁ 들어가며ㅇ Docker 컨테이너를 구성할 때 자주 사용되는 중요한 명령어인 ENTRYPOINT와 CMD는 비슷해 보이지만 중요한 차이점이 있다. 이 글에서는 ENTRYPOINT와 CMD의 차이점에 대해 정리해 보았다. ㅁ ENTRYPOINT란? FROM ubuntu:20.04ENTRYPOINT ["echo", "Hello from ENTRYPOINT"]ㅇ Dockerfile를 작성하고 빌드한다. # 실행$ docker run command-test:latestHello from ENTRYPOINT# Param 추가$ docker run command-test:latest addparam petericaHello from ENTRYPOINT addparam petericaㅇ ENTRYPOINT에 지정..
ㅁ 들어가며ㅇ 지난 글, [Docker] Docker 컨테이너에서 JAR 파일만 수정하고 다시 실행하는 방법에서 실행 중인 컨테이너에서 JAR 파일을 갱신하는 과정을 정리하였다. 이후, 해당 컨테이너를 새로운 태그로 지정하여 Docker Hub에 푸시하는 과정을 정리하였다.2021년, Pinpoint를 구성하면서 작성한 글, [docker] PinPoint docker Commit 하고 Push하기에서도 비슷한 과정이 정리되어 있다. ㅁ 실행 중인 컨테이너를 이미지로 커밋사용법)docker commit :ex) docker commit my_container my_image:updatedㅇ 컨테이너의 현재 상태를 새로운 이미지를 생성하여 저장한다. ㅁ 이미지에 태그 추가사용법)docker tag : ..
ㅁ 들어가며Spring Boot Batch로 작성된 기존 코드에서 연동된 주소만 수정하여 테스트가 필요하였다. Batch는 이미 도커로 빌드된 상황에서 실행 중인 Docker 컨테이너에서 JAR 파일만 수정하고 다시 실행하는 방법을 정리하였다. 이렇게 하면 기존 Endpoint로 선언된 Spring실행 명령문 그대로 변경된 url로 테스트를 수행할 수 있었다. ㅁ 새로운 JAR 파일 준비./gradlew clean buildㅇ 로컬 환경에서 수정된 코드로 새 JAR 파일을 빌드 ㅇ IntelliJ에서 Gradle build를 실행하면 build/libs/빌드된.jar를 확인할 수 있다. ㅁ 새 JAR 파일을 컨테이너로 복사docker cp /로컬/경로/radio-da-1.0.0-SNAPSHOT.jar ..
ㅁ 들어가며재해 복구 계획을 수립할 때 가장 중요한 두 가지 지표가 있다. 바로 RTO(Recovery Time Objective)와 RPO(Recovery Point Objective)이다. 이 두 지표에 의미를 정리하였다. ㅁ RTO (Recovery Time Objective): 목표 복구 시간RTO는 재해 발생 후 시스템을 복구하여 정상 운영 상태로 돌아가는 데 걸리는 최대 허용 시간을 의미한다.예를 들어, RTO가 4시간이라면 재해 발생 후 4시간 이내에 시스템이 정상 작동해야 한다는 의미이다.정의: 애플리케이션이 오프라인 상태로 있을 수 있는 최대 허용 시간목적: 비즈니스가 감당할 수 있는 최대 다운타임을 결정특징: 시스템 복구 속도와 직접적으로 연관됨 ㅁ RPO (Recovery Point ..