페이지네이션을 구현하던 중, 다음과 같은 에러를 마주했습니다. Exception에서는 접근할 수 있는 표현이 없다는 내용이었으며, 클라이언트가 요청한 것과 실제로 생성된 Type이 다를 경우 발생하는 것으로, 핸들러 메서드가 클라이언트가 요청한 Type으로 응답을 전달할 수 없는 것이 원인으로 확인되었습니다. 변경 전, 페이지네이션용 ResponseDto 페이지네이션용 ResponseDto는 제네릭 타입을 이용하여 만들었는데, 해당 클래스에 접근할 수 없기 때문에 클라이언트가 요청한 Type으로 응답을 전달하지 못한 것이었습니다. 변경 후, 페이지네이션용 ResponseDto Getter와 관련된 메서드가 없기 때문에 값을 가져올 수 없었던 것으로 확인되었으며, 현재 Lombok을 사용하고 있기 때문에 ..
Java Java의 특징을 설명해주세요. Java는 객체 객체지향 프로그래밍 언어입니다. 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어입니다. Java의 장점은 JVM(자바가상머신) 위에서 동작하기 때문에 운영체제에 독립적이며, GarbageCollector를 통한 자동적인 메모리 관리가 가능하다는 것입니다. Java의 단점은 JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리고, 다중 상속이나 타입에 엄격하며, 제약이 많다는 것입니다. JVM의 역할에 대해 설명해주세요. 자바 가상 머신(Java Virtual Machine)의 약자를 따서 줄여 부르는 용어로 JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 자바..
웹 서버 TOMCAT Tomcat이란? Apache사에서 개발한 서블릿 컨테이너만 있는 오픈소스 웹 애플리케이션 서버 Spring Boot의 내장 서버이기 때문에 별도의 설치 과정 없이 자연스럽게 Tomcat을 사용함 Tomcat의 특징 자바 애플리케이션을 위한 대표적인 오픈소스 WAS(Web Application Server) 오픈소스이기 때문에 라이선스 비용 부담 없이 사용할 수 있음 독립적으로도 사용 가능하며 Apache 같은 다른 웹 서버와 연동하여 함께 사용할 수 있음 Tomcat은 자바 서블릿 컨테이너에 대한 공식 구현체로, Spring Boot에 내장되어 있어 별도의 설치 과정이 필요하지 않음 Tomcat 실행 및 의존성 확인하기 IntelliJ 상단 메뉴바의 View > Tool Windo..
Proxy Server 프록시 서버 대리라는 뜻의 Proxy에서 알 수 있듯 프록시 서버(Proxy Server)는 클라이언트가 서버와 소통할 때, 서버에 바로 접근하지 않고 자신을 통해 서버에 접근할 수 있도록 해주는 일종의 대리 서버 보통 일반 사용자는 지역이 제한되어 있는 서비스를 이용하기 위해 우회하거나, 캐시를 통해 더 빠른 이용을 하기 위해 프록시 서버를 사용함 프록시 서버의 종류 프록시 서버는 위치에 따라 Forward Proxy와 Reverse Proxy 두 가지로 나뉨 프록시 서버가 클라이언트에 가까이 있는지, 서버에 가까이 있는지로 구분할 수 있음 각각 다른 목적을 기대하기 때문에 상황을 고려하여 판단을 내릴 수 있음 1. Forward Proxy Forward Proxy는 클라이언트 ..
Github Actions를 통한 배포 자동화 빌드파일 배포 및 실행 CodeDeploy 설정 S3에 저장된 빌드 파일을 EC2 인스턴스로 전달하기 위해 CodeDeploy 설정을 진행함 CodeDeploy 애플리케이션 생성하기 배포 > 애플리케이션을 클릭함 [애플리케이션 생성] 버튼을 클릭함 애플리케이션 이름을 작성하고, 컴퓨팅 플랫폼은 EC2/온프레미스를 선택함 애플리케이션 이름의 경우 Github Actions 워크플로에 작성이 필요함 애플리케이션이 생성되면 해당 애플리케이션 내에 배포 그룹을 생성함 배포 그룹 생성하기 배포 그룹은 방금 전 생성한 애플리케이션에 생성되어야 함 다른 애플리케이션에 생성하고 있거나 애플리케이션 정보가 잘못된 경우 이전 진행 내역을 다시 진행해야 함 배포 그룹 이름 역시..
Github Actions를 통한 배포 자동화 개요 및 사전 준비 사항 주의 사항 EC2 인스턴스에 파이프라인 실습으로 인해 실행되고 있는 애플리케이션이 있다면 프로세스를 종료함 이전에 진행한 실습으로 생긴 리소스를 리소스 이름을 확인한 후 모두 삭제하고 진행함 CodeBuild 빌드 프로젝트 CodeDeploy 애플리케이션과 배포그룹 CodePipeline 파이프라인 EC2 인스턴스에 있는 이전 빌드 결과물 안내되어 있는 이름 규칙을 반드시 지켜야 함 이름 규칙, 태그 등 안내에 따르지 않으면 리소스가 삭제될 수 있음 실습에서 안내하는 기능이나 리소스 외에 다른 기능을 사용하는 경우, 개인 Root 계정을 사용해야 함 프로젝트 사전 준비 https://start.spring.io/ 를 통해 간단한 프로..
배포 자동화 환경 변수 설정 환경 변수 생성 후 EC2에 전달 파이프라인에 올린 EC2 instance에 환경 변수를 전달하는 방법 비밀번호와 같은 환경 변수는 외부에 노출되면 안 되기 때문에, 소스코드에 포함할 수 없음 AWS Parameter Store 서비스를 이용하면 EC2 instance에 환경 변수를 전달할 수 있음 Parameter Store 대시보드로 이동 후, [ 파라미터 생성 ] 버튼을 클릭함 환경변수명과 값 입력 후, 우측 하단의 [ 파라미터 생성 ] 버튼을 클릭함 운영 환경 구성 시 총 4개(spring.datasource.url, spring.datasource.username, spring.datasource.password, config.domain)의 환경 변수를 이용해 DB..
배포 자동화 Automated Deployment 배포 자동화 배포 자동화란 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻함 배포 자동화가 필요한 이유 수동적이고 반복적인 배포 과정을 자동화함으로써 시간이 절약됨 휴먼 에러(Human Error)를 방지할 수 있음 배포 자동화 파이프라인 배포에서 파이프라인(Pipeline)이란 용어는 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 뜻함 파이프라인은 전체 배포 과정을 여러 단계(Stages)로 분리하며, 각 단계는 파이프라인 안에서 순차적으로 실행되며, 각 단계마다 주어진 작업(Actions)들을 수행함 파이프라인을 여러 단계로 분리할 때, 대표적으로 쓰이는 세 가지 단계가 존재함 Source 단계 ..