Programming/Web 33

x-www-form-urlencoded 타입이란 (multipart/form-data와의 차이점)

x-www-form-urlencoded와 multipart/form-data 차이점 //기존에 설정된 springdoc consumes default-consumes-media-type: multipart/form-data //변경된 설정 default-consumes-media-type: application/x-www-form-urlencoded 프로젝트 작업 중 동료분으로부터 'multipart/form-data'로 설정된 springdoc default-consumes-media-type을 'application/x-www-form-urlencoded'로 바꾸는 게 어떻겠냐는 제안을 받았습니다. (consumes: 클라이언트가 서버에 보내는 데이터 타입, produces: 서버가 클라이언트에게 반..

Programming/Web 2023.08.23

GCP 방화벽 허용하는 방법(외부 접속 port 허용)

GCP 방화벽 설정 방법, 외부 접속 port 허용 방법 해당 포스팅은 GCP(Google Cloud Platform) VM 인스턴스에 대한 방화벽을 허용하는 방법에 대해 정리한 내용입니다. 방화벽이란? 방화벽이란, 쉽게 원치 않는 트래픽으로부터 네트워크를 보호하는 네트워크 보안 시스템을 의미하며, 방화멱을 통해 신뢰할 수 있는 네트워크와 신뢰할 수 없는 네트워크 사이의 장벽을 설정할 수 있습니다. 만약 방화벽이 없으면 해당 네트워크는 시스템을 손상시키려는 바이러스나 멀웨어, 해커의 공격 등 많은 악성 트래픽에 무방비로 노출되게 됩니다. GCP 방화벽 기본 설정 GCP 서버를 구축한 뒤에 해당 서버에 설정된 방화벽 정보를 확인해 보면 다음과 같은데요. 인스턴스 생성 시 HTTP, HTTPS에 대한 트래픽..

Programming/Web 2023.08.21

JWT 인증 단점과 중복 로그인 관련 해결 방안

JWT 인증 기능의 단점과 문제점 그리고 중복 로그인 문제 해당 포스팅은 'jwt 인증 기능을 사용하면서 느꼈던 단점과 발생했던 문제점, 그리고 중복 로그인에 대한 나름의 해결 방안'을 정리한 것입니다. 사실 '해결'이라기보다는 '타협'에 더 가까운 것 같으며, 실제 코드보다 이론적으로 풀어서 쓴 내용이 많다는 점 참고 부탁드리겠습니다. 1. JWT 인증 사용 이유 클라우드 기반의 MSA 환경과 RESTful API가 증가하는 등의 영향으로 인해 기존에 사용되던 '세션(Session)' 기반 인증 대신 Stateless라는 특징을 가진 'JWT(JSON Web Token)' 인증 방식이 많이 활용되고 있는데요. 세션 기반 인증의 경우 서버에서 세션에 대한 인증 정보를 가지고 있어야 하지만, JWT는 토큰..

Programming/Web 2023.08.04

스트랭글러 패턴(Strangler Pattern) 개념 정리

지난 5월 AWS Summit Seoul에서 '스트랭글러 패턴(Strangler Pattern)'에 대한 개념을 처음 접하게 되었는데요. 29cm에서 기존의 모놀리식 애플리케이션을 현대적 애플리케이션(MSA, MicroService Architecture)으로 전환하는 과정에서 스트랭글러 패턴이 주로 사용되었다고 하며, 시스템이 정상적으로 돌아가면서 점진적으로 서비스 아키텍처로 분리해 간다는 방식이 궁금증을 자아냈습니다. *Strangler Pattern의 어원은 Martin Fowler가 호주에서 본 Strangler figs라는 식물에서 기원되었습니다. 스트랭글러 패턴은 '소프트웨어 시스템을 점진적으로 재구축하기 위한 디자인 패턴'으로, 이 패턴은 기존에 구축된 레거시 시스템을 한 번에 완전히 대체하..

Programming/Web 2023.05.31

CDN(Content Delivery Network)이란? 콘텐츠 전송 네트워크 개념 정리

이번 5월에 참가했던 aws 컨퍼런스에서도 그렇고 회사 업무 중에도 '서비스에서 사용자 환경을 개선하기 위해 CDN이 사용된다.'는 이야기를 자주 접하게 되었는데요. CDN이란 무엇인지, 어떻게 사용되는지가 궁금하여 정리한 내용입니다. CDN이란 무엇인가? CDN이란 콘텐츠 전송 네트워크(Content Delivery Network)의 약자로 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 콘텐츠 전송 기술(콘텐츠 전송 네트워크)을 말합니다. CDN의 주요 역할은 콘텐츠가 저장된 서버와 사용자의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화하는 것인데요. 많은 산업들의 디지털화가 증가되고 또 글로벌한 서비스들이 늘어남에 따라 CDN의 시장 규모는 점점 더 증가하..

Programming/Web 2023.05.28

무료 ssl 인증서 적용하는 방법(Let's Encrypt)

certbot을 통해 Let's Encrypt에서 제공하는 무료 ssl 인증서 적용하는 방법 ssl 인증서는 클라이언트와 서버 간의 통신을 제3자가 보증해 주는 전자화된 문서인데요. ssl 인증서를 사용함으로써 통신 내용이 공격자에게 노출되는 것을 막을 수 있으며, 통신 내용의 악의적인 변경을 방지할 수 있습니다. 또한 클라이언트는 접속하려는 서버가 신뢰할 수 있는 서버인지를 해당 인증서를 통해 판단할 수 있게 됩니다. /* SSL(Secure Socket Layer)과 TLS(Transport Layer Security Protocol)는 같은 의미인데요. SSL이 표준화기구 IETF의 관리로 바뀌면서 TLS라는 이름으로 바뀌게 되었으며, 아직까지 TLS라는 이름보다 SSL이라는 명칭이 더 많이 사용되..

Programming/Web 2023.04.15

OAuth, OAuth2 개념과 동작 방식 정리

OAuth, OAuth2 개념과 동작 방식 정리 Spring Security + OAuth2를 통한 소셜 로그인을 구현하던 중, oauth의 개념과 이론적인 동작 방식에 대해서 자세하게 알고 싶어 정리한 내용입니다. 1. OAuth, OAuth2.0 이란? 위키백과에 따르면 'OAuth(Open Authorization)'는 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준인데요. 사용자의 아이디와 비밀번호 없이 접근 권한을 위임받을 수 있다는 것은, 로그인 및 개인정보 관리 책임을 'Third-Party Application(google, kakao, n..

Programming/Web 2023.03.22

(spring boot) RedisRepository 사용하는 방법, @RedisHash

Spring Data Redis, RedisRepository 사용하는 방법 spring boot에서 인메모리 데이터 저장소인 redis를 사용하기 위해서는 org.springframework.data.redis.core 패키지에 있는 'RedisTemplate 클래스를 사용하는 방법'과 CrudRepository를 상속받는 'RedisRepository를 사용하는 방법'이 있는데요. 해당 포스팅에서는 두 번째 방법인 CrudRepository를 상속받은 인터페이스를 이용해서 Redis를 사용하는 방법에 대해서 살펴보겠습니다. (예시에 사용된 spring boot 버전은 2.6.4 버전을 사용했으며 Jedis, Lettuce 오픈소스 라이브러리 중 spring boot 2.0부터 기본적으로 탑재된 Let..

Programming/Web 2023.03.07

REST API Response Format, 응답 객체는 어떤 형식이 좋을까?

rest api response format and example 1. REST API 응답 형식에 대한 의문 지금까지 백엔드로 RESTful API를 여러 번 작업하면서 의문을 느낀 점은 각각의 프로젝트마다 'api 요청에 대한 response 형식이 다르다'는 것입니다. 이유는 RESTful API 응답 형식에 대한 표준이 없기 때문인데요. 표준은 없더라도 많이 사용되거나 선호되는 형식이 있을 것 같았으며, 해당 형식을 사용하는 합당한 이유들이 존재할 것 같아서 그에 대한 내용을 찾아보았습니다. (rest api response 형식에 대해서는 stackoverflow 등의 커뮤니티에서도 활발한 토론이 이뤄지고 있습니다.) 추가로 내용을 찾아보면서 개인적으로 적합하다고 생각되는 응답 형식의 예시와 해..

Programming/Web 2023.02.25

gcp vm 인스턴스 swap 스왑 메모리 적용하는 방법

GCP VM 인스턴스 스왑 메모리(swap) 적용하는 방법 스왑 메모리(swap memory)란? 시스템에서 메모리(RAM)가 부족할 경우 프로세스는 더 이상 작업을 이어가지 못하고 종료되는데요. 스왑 메모리는 시스템에 메모리가 부족한 상황에서 하드 디스크의 일부 공간을 활용하여 작업이 계속되도록 도와주는 영역으로, '하드 디스크의 일부를 RAM처럼 사용할 수 있게 만드는 방법'입니다. RAM처럼 사용할 수 있게 만들었다지만 하드 디스크 상에 위치하기 때문에 RAM에 접근하는 것보다 접근 속도가 느리며, 따라서 데이터를 처리하는 속도도 느린데요. 속도는 느리지만 메모리가 부족하여 시스템이 다운되거나 장애를 발생시키는 것 보다는 스왑 메모리를 활용하는 것이 안전성 측면에서 뛰어나다는 장점이 있습니다. 대부..

Programming/Web 2023.02.22