JAVA
[자바 intellij] @RequestParam? @ModelAttribute? @RequestBody는 또 뭐야??
이번 포스팅에서는 위 3가지 에노테이션들에 대해 비교해볼 건데 핵심은 @RequestParam과 @ModelAttribute는 주로 파라미터 값을, @RequestBody는 Http Body 값을 가져오기 위해 활용하는 에노테이션들입니다. # @RequestParam 정말 자주 쓰이는 에노테이션으로 개발을 한다면 꼭 한번 마주칠 개념입니다. 위에서 @RequestParam은 파라미터를 가져온다고 했는데 다음의 예시를 보면 이해가 편하실 것입니다. 네이버에서 세계일보 사이트에 들어가면 다음과 같은 url을 확인할 수 있습니다. newsstand.naver.com/까지는 이해하겠는데 그 뒤의 내용은 무엇일까요? 이것이 바로 Http 요청 파라미터입니다. 해당 url에서는 각각 list와 pcode라는 파라미..
[AWS] Security Group의 개념과 활용방법에 대해 간략히 알아보자
AWS에서 보안그룹, 즉 Security Group이란? 인스턴스로 들어가고 인스턴스에서 나가는 트래픽에 대한 가상 방화벽입니다. 여기서 인스턴스로 들어가는 트래픽을 인바운드, 인스턴스에서 나가는 트래픽을 아웃바운드라고 합니다. *인스턴스는 한대의 컴퓨터 단위이고 AWS에서 가상의 컴퓨터를 빌리는 것을 인스턴스를 생성한다고 합니다. 먼저 인바운드규칙은 EC2 인스턴스로 들어오는 트래픽에 대한 규칙입니다. 인바운드 규칙에 허용되지 않은 규칙은 인스턴스로 접근하지 못하도록 필터링 됩니다. EC2 인스턴스를 생성하면 기본적으로 SSH 접속을 위한 SSH 규칙만 생성되어 있습니다. 예를들어 위 그림에서는 방화벽이 EC2에 접근하려는 요청들을 걸러주는 역할을 하는 인바운드 규칙입니다. 아웃바운드 규칙은 EC2 인..
[AWS] 그래서 AWS의 EC2가 대체 뭐야!?
EC2는 Elastic Compute Cloud의 약자로 Elastic의 '탄력적인'의 뜻은 사용한 만큼 돈을 지불하고 비용적인 부분뿐만이 아니라 필요에 따라 성능, 용량을 자유롭게 조절할 수 있다는 의미도 가지고 있습니다. EC2을 포괄적으로 말하면 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스입니다. 여기서 클라우드 컴퓨팅은 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스입니다. 정리하면 아마존에서 가상의 컴퓨터를 한 대 빌리는 것과 같습니다. 아마존 EC2를 통해서 할 수 있는 가장 기본적인 일은 웹서버를 설치하고 웹 서버를 통해서 사용자가 웹 브라우저를 통해 요청하는 서비스를 제공하는 것입니다. # EC2 중요 용어 *인스턴스는 1대의 컴퓨터를 의미하는 단위이고 AWS에..
[Spring 자바] OAuth2의 개념과 동작 흐름에 대해 알아보자
최근 특정 웹 사이트의 서비스를 이용하고자 할 때, 자체적인 로그인 시스템 뿐만 아니라 구글, 카카오 등의 로그인 서비스를 제공하는 곳들이 많이 보입니다. 이렇게 다른 보안, 인증 기법을 활용하여 서비스에 접근할 수 있는 기술을 우리는 "OAuth"라고 말합니다. # OAuth 는 언제, 왜 쓸까요? OAuth를 활용한다면 자주 사용하고 중요한 서비스들(예를 들어 google, github, facebook)의 ID와 Password만 기억해 놓고 해당 서비스들을 통해서 소셜 로그인을 할 수 있습니다. 매우 편리하죠? 뿐만 아니라 OAuth는 보안상의 이점도 있습니다. 보안상 허점이 많은 특정 사이트에 로그인 해야할 때OAuth를 사용하여 로그인한다면, 직접 유저의 민감한 정보가 App에 노출될 일이 없..
[Java Spring] intellij 인증서 발급 및 HTTPS 서버 구현 방법(mkcert)
자바는 대표적으로 두 가지의 인증서 형식을 지원합니다. 1) PKCS12 (Public Key Cryptographic Standards #12) : 여러 인증서와 키를 포함할 수 있으며, 암호로 보호된 형식입니다. 업계에서 널리 사용됩니다. 2) JKS (java keystore : PKCS12와 유사합니다. 독점 형식이며 Java 환경으로 제한됩니다. 이번에는 PKCS12를 사용해서 인증서를 발급받아 보겠습니다. # 설치 mksert라는 프로그램을 이용해서 로컬 환경(내 컴퓨터)에서 신뢰할 수 있는 인증서를 만들 수 있습니다. mkcert는 PKCS12 형식만 지원합니다. Window 사용자의 경우 WSL 터미널에 다음 명령어를 이용해 설치합니다. $ sudo apt install libnss3-to..
[자바 Spring] intellij로 복잡한 API문서를 자동으로 만들 수 있다고!? Spring Rest Docs에 대해 배워보자
API 문서란 개발자가 제작한 애플리케이션을 효과적으로 사용하기 위해 클라이언트(웹 브라우저)에게 제공하는 애플리케이션 사용법 문서입니다. 위 API 예시처럼 애플리케이션에서 꼭 필요한 각 필드들의 TYPE과 용도,필요성 등이 기입되게 됩니다. 일반적으로 API 문서는 개발자가 직접 작성하지만 Spring은 편리성을 위해 자동으로 API 문서 제작이 가능한 기능을 넣어두었습니다. 대표적으로 "Spring Rest Doc"와 "Sweggar"이 있습니다. 아래 코드는 Swagger 활용 예시입니다. 다른 코드는 다 필요없이 @Api가 들어간 에노테이션들만 보시면 됩니다. 보시다시피 거의 모든 메서드에 특정 에노테이션이 추가되어 있습니다. 비록 Swagger가 "postman"과 같이 Api 요청 툴로써 활..
[자바 Spring] 단위 테스트, 슬라이스 테스트 등 테스트의 기초에 대해 알아보자
먼저 테스트들의 종류부터 확인하고 시작하겠습니다. 다음 그림을 통해 각 테스트가 맡고 있는 역할을 짐작할 수 있을 것입니다. # 기능 테스트 기능 테스트는 테스트 중 가장 큰 단위를 가지고 있는 테스트로, 주로 애플리케이션을 사용하는 사용자 입장에서 애플리케이션이 제공하는 기능이 올바르게 동작하는지를 테스트합니다. 기능 테스트의 경우 API 툴이나 데이터베이스까지 연관되어 있어서 HTTP 통신도 해야되고, 데이터베이스 연결도 해야 되며 그림 상에는 보이지 않지만 외부 서비스와도 연동될 수 있기때문에 얽혀있는 것이 많은 테스트라고 볼 수 있습니다. # 통합 테스트 기능 테스트는 테스트를 하는 주체가 주로 개발자 이외의 제 3자인 반면에 통합 테스트는 애플리케이션을 만든 개발자 또는 개발팀이 테스트의 주체가..
[자바 Spring] 가독성 좋은 테스팅 기법 Hamcrest의 기초 사용 방법
Hamcrest는 Junit 기반의 소프트웨어 테스트 작성 지원 프레임워크입니다. 다양한 Matcher를 제공하여 간결하고 가독성 있는 코드로 테스트할 수 있게 지원합니다. Hamcrest는 다음과 같은 이유로 Junit에 지원하는 Assertion 메서드 보다 최근 더 많이 사용됩니다. Assertion을 위한 매쳐(Matcher)가 자연스러운 문장으로 이어지므로 가독성이 향상 된다. 테스트 실패 메시지를 이해하기 쉽다. 다양한 Matcher를 제공한다. 이해를 돕기위해 이미 Junit Assertion로 작성된 코드를 Hancrest 방식으로 변환하며 설명하겠습니다. import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Asse..