[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..
[Web] JSP란? JSP 호출과정 / 기본객체 / EL / JSTL
·
Web
1. JSP 란? Java Server Page - HTML 코드에 Java 코드를 넣어 동적 웹페이지를 생성하는 웹 애플리케이션 도구 - JSP가 실행되면, Java Servlet으로 변환되며 웹 애플리케이션 서버에서 동작되면서 필요한 기능을 수행하고 생성된 데이터를 웹 페이지와 함게 클라이언트로 응답한다 - HTML 코드 작성이 편해지지만, 비즈니스 로직 또한 JSP 파일에 같이 존재 (→ SRP 어긴다 → 유지보수가 어려워진다) 2. JSP 호출과정 - 확장자가 *.jsp인 요청은 모두 JspServlet이 받는다 - 첫 번째 호출에만 JSP를 변환 → 컴파일 → 객체 생성 (시간 지연 有) 두 번째 호출부터는 객체 생성 없이 service() 메서드 응답 - JSP가 변경되면 다시 변환 → 컴파일..
[Web] 서블릿(Servlet)이란? JSP와 MVC 패턴으로의 변화
·
Web
HttpServletRequest 객체나 WAS에 대해 공부할 때 나온 Servlet이란 무엇일까? 어렴풋이 비즈니스 로직을 처리해서 결과를 전달해준다는 느낌은 오는데, 구체적으로 알아보자 그리고 서블릿을 어떻게 발전시켜 지금의 MVC 구조가 나왔는지도 알아보자! 1. 서블릿(Servlet) 이란? 동적 웹페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로도 체계적으로 다룰 수 있게 한다 1.1. 서블릿의 주요 특징 - 클라이언트의 Request에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트 - Java 스레드를 이용하여 동작 - MVC 패턴에서 Controller로 이용 - 컨테이너에서 실행 - 보안 기능을 적용하기 쉬움 - 기본..
[Spring] MVC 패턴이란? Model / View / Controller / 메인 메서드 반환타입
·
Spring
0. 관심사의 분리 - OOP 5대 설계원칙 : SOLID • SRP : 단일 책임의 원칙 (하나의 메서드는 하나의 책임(Concern)) - 좋은 객체지향 설계를 위한 분리 1. 관심사 분리 2. 변하는 것(Common) / 변하지 않는 것(Uncommon) 분리 3. 공통코드 (중복코드) 1. MVC 패턴이란? - 소프트웨어를 Model - View - Controller의 3가지 구성 요소로 구분한 개발 방법론이다 - 사용자가 Controller를 조작 → Controller는 Model을 통해 데이터를 가져옴 → 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달 - Model : 정보 및 데이터 부분. 데이터와 관련한 값과 기능을 가지는 객체 - View : 입력값, 체크박..