Study

· Study/Java
CGI 란? CGI란 웹 서버와 외부프로그램 간의 통신을 위한 인터페이스로, 클라이언트의 동적 자원 요청을 처리하기 위해 사용됩니다. 여기서 외부 프로그램(CGI 프로그램) 은 Python, C, PHP 등 여러 언어에서 CGI 인터페이스를 기반으로 구현하고, 웹 서버는 동적인 자원에 대해 요청이 발생하면 해당 CGI 프로그램을 호출한 뒤 결과를 클라이언트에게 반환합니다. 이 CGI는 클라이언트의 요청이 발생할 때 마다 매번 프로세스를 생성해서 시스템 자원을 비효율적으로 사용한다는 단점이 있는데, Java에서는 이런 단점을 보완하기 위해 CGI 대신 Servlet 기술을 사용합니다. Servlet 이란? Servlet은 자바 언어에서 CGI의 단점을 보완하며 동적으로 클라이언트의 요청을 처리하기 위해 제..
개요 URI, URL, URN는 모두 인터넷 상에서 자원을 식별하기 위해 사용하는 용어이다. 주로 URL이라고 혼용해서 사용되곤 하지만 각각 다른 목적과 형식을 가지고 있다. 이번 글에서는 세가지 용어에 대한 개념과 차이점에 대해 알아본다 URI, URL, URN 의 개념 URI Uniform Resource Identifier 의 약자로, 하나의 자원을 고유하게 식별하는 문자열이다. URI는 자원의 위치(URL)이 될수도 있고 자원의 이름(URN)이 될 수도 있는 가장 상위의 개념이다. URL Uniform Resource Locator 의 약자로, 자원의 위치를 식별하는 문자열이다. URL은 다음과 같은 구성요소로 이루어져 있다. 1. Scheme - 자원에 접근하기 위한 통신 프로토콜 - http,..
JWT란 JWT란 Json Web Token 의 약자로, 클라이언트와 서버 간의 정보를 안전하게 주고 받기 위한 토큰 기반의 인증 방식 중 하나이다. JWT의 구조는 header.payload.signature로 구성되어 있고, 각각 Base64로 인코딩 되어 있다. 1. header header는 아래의 json과 같이 토큰의 타입(ex) jwt)과 해싱 알고리즘(ex) HS256) 을 지정한다. 해싱 알고리즘으로는 시크릿 키를 사용하는 HS256과 공개키/개인키를 사용하는 RSA 가 있는데, 주로 HS256 방식을 사용한다. { "alg": "HS256", "typ": "JWT" } 2. Payload payload은 클레임(정보)을 담는 부분으로, 아래와 같이 세가지 종류의 클레임이 있다. Regi..
· Study/Test
TDD(Test Driven Development)란 ? TDD란 “테스트 주도 개발” 이라는 뜻으로, 프로덕션 코드보다 테스트 코드를 먼저 작성해서 테스트가 구현 과정을 주도하는 개발 방법론이다. TDD 과정 (RED-GREEN-REFACTOR) TDD는 아래와 같은 RED - GREEN - REFACTOR 과정을 거치며 프로덕션 코드를 완성해간다. 1단계 : RED 기능을 구현하기 전 테스트 코드를 먼저 작성하고, 테스트를 실행시켜 실패하는 과정을 겪는다. 📌 예시 아래의 코드는 TDD의 RED 과정의 예시로, 음료의 총 금액을 구하는 calculateTotalPrice 메소드의 단위 테스트 코드이다. 현재 calculateTotalPrice 메소드는 구현되지 않았고, 테스트 코드만 작성해놓은 상태이..
Spring Web MVC 란? Spring Web MVC란 Spring Framework와 Servlet API를 기반으로 하는 웹 애플리케이션 프레임워크로, 주로 Spring MVC라고 줄여서 부릅니다. 이 Spring MVC는 이름에서 유추할 수 있듯이, 웹 요청을 Model-View-Controller로 역할을 분리해 처리하는 MVC 패턴을 사용한다는 특징이 있고 (그 중에서도 Controller 역할을 Servlet이 수행하고 결과를 JSP를 통해 리턴하는 MVC2 패턴을 사용) 데이터 바인딩 및 검증 기능을 제공하며, Interceptor를 제공해 요청을 처리하기 전 후로 보안 / 로깅과 같은 작업을 수행할 수 있다는 특징이 있습니다. Spring MVC의 장단점은 다음과 같습니다. 장점 Mo..
· Study/Etc
개요 AWS(Amazon Web Services)는 아마존이 제공하는 클라우드 컴퓨팅 플랫폼으로, 간편하게 자신만의 웹 서비스를 구축할 수 있게 도와준다. 최근에는 IT 기업 부터 사이드 프로젝트를 진행하는 취준생까지 AWS 를 매우 많이 사용하고 있다. 하지만 AWS는 사용하는 만큼 비용을 지불하는 Pay-as-you-go 정책을 사용하고 있기 때문에 자칫 잘못 사용하게 된다면 과금 폭탄을 맞을 수도 있기 때문에 있으니 조심해서 사용해야 한다. (검색해서 찾아보면 실제로 백만원 단위 부터 억 단위로 과금 폭탄을 맞은 사람들이 있다..) 이번 글에서는 이러한 과금 폭탄을 피하기 위해서 필요한 몇가지 설정을 소개하려 한다. 비용 모니터링 설정 내가 사용하고 있는 클라우드 서비스의 요금이 특정 가격을 넘을 ..