개발 40

(인강복습) 쿠버네티스 어나더 클래스 Sprint 1 - 실무에서 느껴 본 쿠버네티스가 정말 편한 이유

현재는 많은곳에서 가상화기술을 활용하여 앱배포하고 서비스를 제공하고있다. 쿠버네티스를 사용하면 어떤점이 좋은가? 모니터링 개발과 모니터링 시스템이 서로 엮이지 않는 구조 개발 초기부터 바로쓸수있는 모니터링 시스템을 만드는구조 오픈시 개발 프로젝트와 자동으로 같아지는 범위의 App들을 모니터링 하게되는 구조 서비스안정화 트래픽라우팅 : 트래픽과부하를 분산시켜줌 셀프힐링 : 장애발생시 재기동해줌 오토스케일링 : 자원부족시 수평적으로 자원을 늘려줌 롤링업데이트 : 배포시 문제점을 체크해서 문제가 없으면 배포해줌 자동화 결국 위에있는것들 모두 기존에 구축가능하지만 자동화가 큰차이 인프라환경의 코드화 인프라에대한 히스토리관리가 편해짐 환경별파일생성 새인프라작업시 이전 경험을 녹일수있음 쿠버기술 배우는법 최소한의 ..

개발/Infra 2024.03.10

(인강복습) 쿠버네티스 어나더 클래스 Sprint 1 - 무게감 있게 설치하는 방법

Virtual Box (가상화 소프트웨어) 설치 Vagrant (Virtual Box 관리도구) 설치 Rocky Linux Repo ( RPM 패키지의 저장소 설정) Rocky Linux 설치 config.vm.box = "rockylinux/8" > 로키 리눅스 설치버전 config.vm.define "master-node" do |master| > VM 이름설정 master.vm.hostname = "k8s-master" > 호스트네임 (OS상에서 부르는 컴퓨터의 별칭) master.vm.network "private_network", ip: "192.168.56.30" private_network : Host-Only Network, 즉 내 PC에서만 사용할수있는 네트워크망 위 설정이랑 별개로 NA..

개발/Infra 2024.02.26

(인강복습) 쿠버네티스 어나더 클래스 Sprint 1 - 컨테이너 한방 정리

A : 이제 도커가 유료화 된다던데 이걸 런타임으로 써도되요? B : 안되지 컨테이너D가 나왔는데 이걸로 다 바뀌어 다시만든다고 고생할껄? OS변천사 태초에 유닉스가 있었는데 비싸서 대중적으로 사용하기 꺼려했다 91년 리눅스의 등장 → 데비안(무료), 레드헷(유료) 데비안 → 우분투 레드헷 → 페도라(무료) → 안정화 → 엔터프라이즈(유료) → CentOS CentOS 지원종료예정(24년) → IBM인수 IBM인수후 → 페도라 → CentOS(스트림) → 안정화 → 레드헷 레드헷 → 복제 → 로키리눅스, 알마리눅스 컨테이너변천사 리눅스의 격리기술이 발전함 → namespace : 프로세스 격리 LXC (Linux Container) : 최초의 컨테이너가 등장, OS가상화목적 이후 누구나 쓰기쉬운형태로 도..

개발/Infra 2024.02.24

PDFBOX를 활용하여 간단하게 워터마크 붙여보기

PDF 를 생산, 가공하는 자바 라이브러리로 많이 추천되는 것은 ITEXT 지만 GNU 라이센스정책을 적용받기때문에 상용으로 사용하는 것 아니면 추천되지 않는다 (생각보다 비싸다) 가장 좋은 대안은 아파치라이센스를 적용받는 PDF BOX로서 사용방법을 살펴보려고한다. 우선 3가지 파일이 필요하다 1. 테스트용 PDF 파일 2. 워터마크 이미지파일 3. 폰트파일 우선 라이브러리 추가가 필요하다 implementation 'org.apache.pdfbox:pdfbox:2.0.29' 그 후에 준비물들을 불러온다 // 초안파일 File inputPdfFile = new File("C:\\dev\\testfile\\test.pdf"); // 워터파크 이미지파일 File watermarkImageFile = new..

개발/Etc 2023.11.03

[Swagger] Request가 Map인 경우 Controller 작성법

일반적으로 Controller 에 Request를 Vo로 받는것이 권장되지만 부득이하게 Map으로 받아야되는경우 아래와같이 Swagger를 작성할수 있습니다 @Tag(name = "테스트") @Operation(parameters = { @Parameter(name = "test1", description = "테스트1", required = true, example = "1"), @Parameter(name = "test2", description = "테스트2", required = true, example = "2") }) @PostMapping("/api/test") HashMap test (@RequestParam HashMap param){ return null; } Parameter hidd..

개발/Spring 2023.11.01