[DevOps] 오픈시프트(OpenShift)와 쿠버네티스(Kubernetes)
·
DevOps
1. Kubernetes (k8s)1.1. 쿠버네티스란?❓ 컨테이너를 쉽고 빠르게 배포 및 확장하고, 관리를 자동화해주는 오픈소스 플랫폼컨테이너 오케스트레이션 툴오케스트레이션 : 배포, 관리, 확장, 네트워킹을 자동화컨테이너 수가 많아지면 관리 / 운영이 어려움 → 다수의 컨테이너를 관리 / 조율하는 시스템 필요컨테이너의 생성, 소멸, 시작 및 중단 시점 제어, 스케줄링, 로드 밸런싱, 클러스터링 등 모든 과정 관리특징컨테이너화된 애플리케이션 배포컨테이너로 패키징된 애플리케이션을 여러 대의 컴퓨터 / 클라우드 인프라에 쉽게 배포 가능자동 스케일링 (Auto Scaling)애플리케이션 부하에 따라 자동으로 서버를 늘리거나 줄이기 가능트래픽 증가에 대처 용이고가용성 (High Availability)애플리케..
[DevOps] 컨테이너(Container)와 도커(Docker)
·
DevOps
1. Container1.1. 컨테이너란?❓ 실행 환경에 독립적으로 애플리케이션을 실행하는 기술운영체계 수준의 격리 기술애플리케이션 구동에 필요한 라이브러리, 종속 항목을 패키징장점가벼움 : VM과 달리 Guest OS가 없어 크기가 작음탄력성 : 리눅스, 윈도우, 가상머신 등 어느 환경에서나 구동 가능유지 관리 효율: 운영 체제 커널이 하나 → OS 수준 업데이트 / 패치를 한 번만 수행하여 모든 컨테이너에 적용 가능 1.2. 컨테이너와 가상머신(VM)의 차이컨테이너 (Container)하나의 Host OS그 위에서 각각의 독립적인 프로그램처럼 관리 및 실행확장성이 좋고 빠름불필요한 OS 만들기 및 인프라 독립적으로 나눌 필요 없음가상머신 (Virtual Machine)각 VM에 독립적인 Guest O..
[DevOps] Jenkins란?
·
DevOps
0. 젠킨스 (Jenkins)오픈 소스 CI / CD (지속적 통합 / 지속적 배포) 도구소프트웨어 개발 프로세스의 빌드, 테스트, 배포 등을 자동화 및 관리다양한 플러그인과 함께 여러언어와 프레임워크 지원 1. 젠킨스의 특징마스터 / 슬래이브 구조Master (Controller) : slave를 관리하고, 작업 스케줄링, slave 모니터링을 포함한 다양한 작업 관리Slave (Agent) : 실제 파이프라인(빌드, 테스트 등) 작업을 수행다양한 환경에서 작동작업을 분산시켜 부하를 감소시키는 역할로컬 / 클라우드 컴퓨터를 통해 Master에 연결될 수 있어 다양한 유연성 제공파이프라인 스크립트Jenkinsfile : Grooby 언어로 작성된 스크립트 파일소스코드와 함께 버전관리 시스템에 저장각 단..
[DevOps] CI/CD란?
·
DevOps
1. CI (Continuous Integration)새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합개발자를 위한 자동화 프로세스Code - Build - Test 단계에서 꾀할 수 있다개발자는 버그를 일찍 발견할 수 있고, 테스트가 완료된 코드에 대해 빠른 전달 가능코드를 머지하기 전, 이미 빌드 오류나 테스트 오류를 확인하여 훨씬 더 효율적인 개발 가능Code : 개발자가 코드를 원격 코드 저장소 (Ex. github repository)에 push하는 단계Build : 원격 코드 저장소로부터 코드를 가져와 유닛 테스트 후 빌드하는 단계Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는 지 확인하는 과정 2. CD (Continuous Delivery / D..
[Spring] 빌드 관리 도구 Maven vs Gradle
·
Spring
재직 중에 Maven만 사용하다가 요즘은 Gradle이 더 간결하고 많이 쓰인다길래 써보면서 차이점을 기록하려고 합니다 1. 빌드 관리 도구 (Build Tool)Maven과 Gradle은 모두 빌드 관리 도구작업종속성 다운로드소스코드를 바이너리 코드로 컴파일바이너리 코드를 패키징테스트 실행프로덕션 시스템에 배포 2. Maven vs Gradle 차이 2.1. Maven vs Gradle 차이 GradleMaven스크립트적은 양의 스크립트로 짧고 간결한 작성 가능프로젝트가 커질수록 길고 가독성 떨어짐동적 빌드동적 빌드는 Groovy 스크립트로 플러그인 호출하거나 직접 코드 작성 가능정적 형태의 XML 기반이라 동적 빌드 적용 어려움멀티 프로젝트설정 주입 방식 사용 → 멀티 프로젝트에 적합멀티 프로..
[Mac] Java 17 설치 및 버전 변경 (JDK 17)
·
Java
JDK21이 설치된 환경에서 17로 내려야 될 상황이 있었습니다 😒 1. Homebrew를 통해 JDK 17 설치$ brew install openjdk@17homebrew : macOS에서 패키지를 관리하는 도구homebrew 저장소에서 openjdk@17 패키지를 찾아 설치하는 명령어설치 후 디렉토리 : /opt/homebrew/opt/openjdk@17 2. JDK 디렉토리를 macOS가 인식할 수 있는 Symbolic Link 생성$ sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdkmacOS는 기본적으로 JDK 설치 경로를 /Library/Java..
[Web] 서버 성능 테스트 종류와 도구 및 대규모 트래픽 상황 대비
·
Web
0. 성능 테스트의 필요성 - 서버 개발을 완료하고 오류 없이 동작한다고 해도, 실제 서비스에서는 많은 사람들이 동시에 서버에 접속하기 때문에 서버에 부하 발생    - 이 과정에서 여러 문제점이 발견될 수 있다- 또한, 서비스가 운영되는 과정에서 서비스 트래픽이 성장세에 있을 때 추가적인 자원이 필요할 수도 있다- 서버 개발자는 이러한 문제점을 사전에 방지하기 위해 성능 테스트가 필요하다   1. 성능 테스트 (Performance Test)시스템 구성 요소가 특정 상황에서 어떤 성능을 보이는지 확인하기 위해 수행되는 테스트제품의 리소스 사용, 확장성 및 안정성을 검증할 수 있다- 성공적인 성능 테스트는 DB, 네트워크, SW, HW 등과 관련된 대부분의 성능 문제를 예측한다- 성능 테스트의 종류에는 ..
[Spring] JSP와 Spring에서의 Forward와 Redirect : InternalResourceView / RedirectView
·
Spring
JSP에서 한 서블릿에서 다른 서블릿 / JSP로 요청를 전달할 때 사용하는 방법인 Forward & Redirect에 대해 알아보고, Spring에서 이들을 어떻게 처리하는지 알아보자! 1. Forward "내가 물어보고 알려줄게" - 웹 애플리케이션에서 한 서블릿에서 다른 리소스(Servlet, JSP, HTML)로 요청을 전달 (총 요청 1번) - 클라이언트로 요청을 전달하는 것이 아니라 서버 내 다른 리소스 호출 - 기존 request 정보가 유지되어 조회 가능 1.1. Forward 예시 코드 @Controller public class TestController { @GetMapping("/test") public String test(HttpServletRequest request) { ..
[Spring] URL 매핑 : URL 패턴 Servlet URL Mapping / DispatcherServlet
·
Spring
1. URL 패턴 - URL 패턴 규칙을 생각하고 매핑 설정을 해야, 예상한 Servlet / Controller으로 요청할 수 있다 - Servlet과 Spring 모두 아래 URL 패턴 규칙을 사용 가능하다 (1. 2. ... : 우선순위) 종류 URL pattern 매칭 URL 1. exact mapping /test/hello.do http://localhost/syun/test/hello.do 2. path mapping /test/* http://localhost/syun/test/ http://localhost/syun/test/hello http://localhost/syun/test/hello.do http://localhost/syun/test/cat 3. extension mappin..
[Web] 서블릿 필터 (Servlet Filter)
·
Web
서블릿 필터(Servlet Filter)란? Client로부터 Server로 요청이 들어오기 전, 서블릿을 거쳐 필터링 하는 것 - 공통적인 요청 전처리와 응답 후처리에 사용 • 인증, 로깅, 인코딩 등 • 전처리 / 후처리 코드의 중복 제거에 유용하다 - 보통 하나의 필터를 사용하지만 여러 개의 필터를 사용할 수 있다 • Filter1 전처리 → Filter2 전처리 → Servlet → Filter2 후처리 → Filter1 후처리 Filter 인터페이스 필터를 설정하는 FilterConfig, FilterChain, Filter 객체 필요 - FilterConfig, FilterChain 인터페이스를 상속받은 클래스들은 웹 컨테이너가 구현 - Filter에 필요한 건사용자 정의 필터 클래스는 ja..