[개발 일기] 2025.05.02 -GraphQL, gRPC
·
개발 일기
💡 개요 오늘은 API 아키텍처 기술인 GraphQL, gRPC에 대해 정리해 보자. REST는 어제 정리했으니까 생략..! 🛠️ GraphQL GraphQL은 페이스북에서 개발한 API를 위해 쿼리 언어를 사용하는 기술이다. REST의 단점을 극복하고자 2015년에 처음으로 공개되었다. GraphQL의 특징은 다음과 같다. 모든 요청은 /graphql 이라는 하나의 엔드포인트에서 처리한다. REST의 경우엔 기능에 따라 URL을 다르게 분리하지만, GraphQL은 그럴 필요 없다. 클라이언트가 원하는 데이터를 정의하면, 서버는 정확하게 그 데이터만 전달하는 API 방식이다. 불필요한 데이터는 조회하지 않을 수 있다.query { user(id: "1") { name email ..
[Spring] Spring Security 정리
·
Spring
🔐 Spring Security란 Spring Security는 Spring Framework에서 보안이나 인증・인가에 사용되는 프레임워크이다. 일단 인증과 인가가 무엇인지부터 확실하게 정리하자. 인증(Authentication) : 사용자가 누구인지 확인하는 절차 (로그인을 위해 입력한 정보가 본인이 맞는지 확인)인가(Authorization) : 인증된 사용자가 특정 자원에 접근할 권한이 있는지 확인하는 절차 Spring Security는 다양한 기능을 제공하지만, 핵심은 대부분 인증과 인가, 그리고 이 과정에서 파생되는 부가 기능들로 구성되어 있다. Spring MVC만 사용할 경우, 클라이언트의 요청이 Origin 서버로 전달되기 전에 필터나 인터셉터를 통해 요청이 악의적인지, 인증은 되었는..
[개발 일기] 2025.05.01 - ws vs wss (Feat: Nginx)
·
개발 일기
💡 개요 오늘은 일반적인 웹 소켓인 ws와 SSL이 적용된 웹 소켓인 wss에 대해 정리해 보자. 🛠️ ws vs wss 클라이언트와 서버간의 통신은 기본적으로 HTTP를 사용한다. 하지만 채팅같은 양방향 통신이 필요한 경우엔 웹 소켓 통신이 사용된다. 웹 소켓 연결이 성립되면 기존 HTTP 방식처럼 클라이언트가 요청하고 서버가 응답하는 구조를 벗어나, 서버도 클라이언트에게 실시간으로 데이터를 전송할 수 있게 된다. ws는 일반 웹 소켓 연결 방식으로, 내부 데이터가 암호화되지 않은 상태로 전송되기 때문에 보안에 취약할 수 있다. 하지만 wss의 경우, HTTPS 통신과 동일하게 내부 데이터를 암호화하고 메시지를 주고 받기 때문에 보안상 더 안전하다. Nginx를 사용해 SSL을 설정하면..
[개발 일기] 2025.04.30 - REST
·
개발 일기
💡 개요 오늘은 서버 개발에 사용되는 아키텍처인 REST(Representational State Transfer)에 대해 정리해 보자. 🛠️ REST REST란 Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 것을 의미한다.이를 풀어서 설명하면 다음과 같다. HTTP URI을 통해 어떤 자원인지 명시HTTP Method을 통해 해당 자원에 대한 CRUD작업이 무엇인지 명시HTTP Body를 통해 자원의 구체적인 정보 명시 위 세 가지가 REST의 구성 요소이기도 하다.자원을 나타내는 HTTP URI행위를 나타내는 HTTP Method표현을 나타내는 HTTP Body 👍 REST 장점 REST는 HTTP 프로토콜을 기반으..
[개발 일기] 2025.04.29 - apt-get update 하는 이유
·
개발 일기
💡 개요 보통 Ubuntu 같은 리눅스 환경에서 라이브러리나 외부 기술을 설치할 때 apt-get update부터 하고 시작한다. 그 이유가 뭘까? 🛠️ apt-get update apt-get update 명령어는 현재 시스템이 사용 가능한 패키지 목록을 최신 상태로 업데이트하는 작업을 의미한다. 여기서 말하는 패키지는 이미 설치된 소프트웨어를 업데이트하는 것이 아니라, 설치 가능한 패키지의 목록을 갱신하는 것이다. 예를 들어, apt-get install 명령어를 사용했을 때 특정 패키지를 찾지 못하거나 설치할 수 없는 경우, 패키지 목록이 오래되어 생긴 문제일 수 있다. 이럴 때 apt-get update를 먼저 실행해 목록을 최신화한 뒤 다시 설치를 시도해야 한다. 이처럼 apt-..
[개발 일기] 2025.04.28 - HTTP 상태코드
·
개발 일기
💡 개요 오늘은 HTTP 응답에 자주 사용되는 상태코드에 대해 정리 해보자. 🛠️ HTTP 상태코드 보통 상태코드는 예외가 발생했을 때 유용하게 사용된다. 물론 예외에 대한 메시지 또한 응답하지만 1차적으로 상태코드를 통해 어떤 예외가 발생했는지도 확인할 수 있다. 상태코드는 보통 프론트엔드에서 어떤 예외인지 구분할 때 사용된다. 메시지로도 구분이 가능하지만 String같은 문자열을 비교하는 것 보단 백엔드와 프론트엔드가 서로 약속된 Integer 형태의 상태코드를 통해 구분하는 것이 더 정확하다. 대표적으로 사용되는 HTTP 상태코드는 다음과 같다. 100번대 : 정보(Informational)대표적으로 100 Continue가 있다. 100 Continue의 의미는 서버가 요청을 잘 받..