IT 공부

· IT 공부
HTTP (Hyper Text Transfer Protocol)은 웹에서 데이터를 주고 받기 위한 프로토콜이다. 즉, 클라이언트와 서버간의 통신을 해주는 프로토콜인 것이다. 이러한 HTTP의 특성을 알아보자. 무상태 (Stateless) HTTP는 무상태 프로토콜이다. 각각의 요청은 모두 독립적이며 이전 요청이나 응답과 무관하게 처리된다. 이는 서버가 클라이언트의 상태를 유지하지 않는다는 것이다. 이는 서버 확장성을 높이는 특성이 되기도 하다. 상태를 저장하지 않는 특성은 HTTP를 가벼운 프로토콜로 만들어 주었지만 사용자로 하여금 불편한 경험을 제공할 수 있다. 이러한 특성 때문에 쿠키와 세션이 나오게 되었다. 쿠키와 세션은 사용자의 상태 정보를 유지해서 HTTP로 통신하더라도 서비스에서 사용자의 상태..
· IT 공부
이번 글에서는 회원가입, 로그인, 로그아웃, 아이디 찾기, 비밀번호 찾기의 큰 그림을 그려볼 것이다. 특히 로그인과 로그아웃은 토큰 방식으로 설명할 것이다. 회원가입 간단하게 아이디, 비밀번호, 이메일 정도만 입력하는 것으로 하겠다. 2번 과정 이후 사용자의 민감한 정보는 서버에서 DB에 저장할 때 암호화는 필수적이다. 로그인 AccessToken은 비교적 RefreshToken보다 짧은 유효시간을 가지게 된다. 로그인 이후 모든 API 요청마다 AccessToken을 함께 서버로 전달하여 인가 과정을 거치게 된다. RefreshToken은 AccessToken이 만료되었을 때 재발급을 위해 존재한다. 필자와 같은 경우엔 주로 Redis라는 인메모리 데이터베이스를 이용하여 RefreshToken을 보관한..
· IT 공부
HTTPS , SSL/TLS HTTPS는 HTTP에 Secure를 붙인 단어이다. 위 사진에서 볼 수 있듯 HTTP는 보안 측면에서 매우 안좋다. 이유는 "보안이 적용되지 않은 데이터를 전송한다"이다. 요즘 인터넷에서 HTTPS는 선택이 아닌 필수이며 HTTPS는 대게 암호화를 위해 SSL/TLS 인증서를 사용한다. SSL 과 TLS SSL과 TLS 모두 네트워크를 통해 작동하는 서버, 시스템 및 응용 프로그램 간에 "인증 및 데이터 암호화"를 제공하는 암호화 전용 프로토콜이다. SSL은 TLS 이전의 프로토콜로 2015년에 SSL 3.0은 중단되고 TLS가 사용되고 있다. SSL 프로토콜이 남긴 레거시로 현재도 많은 분야에서 TLS와 SSL을 같은 표현으로 사용하기도 한다. 공개키 암호화 (비대칭 암호..
· IT 공부
REST와 GraphQL은 인터넷을 통한 데이터 교환을 위한 API를 설계하는 두 가지 접근 방식이다. REST를 사용하면 클라이언트 애플리케이션이 HTTP METHOD(GET, PUT, UPDATE, DELETE ..)를 사용하여 서버와 데이터를 교환할 수 있으며, 이는 인터넷의 표준 통신 프로토콜이다. 반면 GraphQL은 클라이언트 애플리케이션이 원격 서버로부터 데이터를 요청하는 방법에 대한 사양을 정의하는 API 쿼리 언어이다. REST와 GraphQL의 공통점 기반 통신 프로토콜이 HTTP 이다. 둘 다 유사한 데이터 형식을 지원하면 대부분 JSON이 사용된다. 모두 캐싱을 지원한다. REST와 GraphQL의 차이점 REST 요청 작동에 사용되는 요소는 다음과 같다. HTTP METHOD HT..
· IT 공부
하나의 서비스를 만들때 빼놓을 수 없는것은 바로 '데이터베이스'이다. 데이터베이스가 없다면 우리는 정보를 어떻게 저장하고 유지하고 분석할 수 있을까? 이번 글에서는 어떤 서비스든 빼놓을 수 없는 '회원' 데이터베이스에 대해서 어떻게 짜는게 좋을지에 대해 글을 써보겠다. 그리고 겸해서 RDB와 NOSQL중에 어느 상황에서 선택하면 좋을지도 써보겠다. Member Table 내가 보통 회원 데이터베이스를 설계할 때는 이러한 정보는 주로 넣는다. Primary Key 용 id 로그인 아이디 (요새는 이메일을 로그인용 아이디로 쓴다.) 비밀번호 닉네임 권한 (ROLE) 생년월일 성별 핸드폰번호 가입일 어떤 테이블을 만들던 가장 고민하는 것은 "PK를 auto_increment로 두는게 가장 좋은 방식일까?" 이..
· IT 공부
백엔드 개발자를 꿈꾸는 사람으로서 주로 스프링부트를 이용하여 개발을 한다. 그저 기능개발을 위해서라면 단순 구글링을 통해 어찌저찌 완성시킬 수 있지만 만든 후에 내 머릿속에 크게 남는게 없는 느낌이 든다. 글을 정리하며 머리속에 남겨보도록 하자. 사용자 인증(Authentication)과 권한 부여(Authorization) Authentication이라 불리는 인증은 말그대로 '인증'을 뜻한다. 예를 들어 클라이언트가 서비스를 이용하기 위해 '로그인'을 하는 과정이 해당된다. Authorization이라 불리는 인가(권한 부여)는 '인증' 단계를 거친 사용자에게 특정 리소스나 기능에 접근할 수 있는 권한을 부여하는 것이다. 예를 들어보면 사이트에 접속한 클라이언트가 특정 파일 또는 글에 접근하려 할 때..
Choony
'IT 공부' 카테고리의 글 목록