Programming/Web 36

서블릿과 서블릿 컨테이너 이해하기(Servlet, ServletContainer)

서블릿과 서블릿 컨테이너 이해하기(Servlet, ServletContainer)서블릿(Servlet)과 서블릿 컨테이너(ServletContainer)는 자바 기반 웹 애플리케이션을 개발하는데 기본이 되고 또 자주 만나게 되는 개념입니다.하지만 정확하게 어떤 역할을 하고 어떤 방식으로 동작하는지 스스로 명확하게 설명하지 못하는 것 같아 정리해 본 내용입니다. 서블릿(Servlet)// Servlet 3.0 이상을 지원하는 경우 web.xml 파일을 사용하지 않고 @WebServlet 과 같은 어노테이션 기반의 설정을 사용할 수 있습니다.@WebServlet(name = "exampleServlet", urlPatterns = "/example")public class ExampleServlet exte..

Programming/Web 2024.07.05

톰캣 로그 종류 및 설정 방법 (catalina.out 주의할 점)

톰캣 로그 종류 및 설정 방법 (+ catalina.out 로그 파일 주의할 점)최근 외장 톰캣에 프로젝트를 배포하고 운영화는 과정에서 톰캣 인스턴스의 /logs 디렉터리 하위에 여러 개의 로그 파일이 생기는 것을 확인하였는데요.해당 포스팅에서는 Tomcat에서 생성되는 각각의 로그 파일 종류와 설정 방법, 추가로 'catalina.out' 로그 파일의 주의할 점을 함께 살펴보겠습니다. Java Logging Framework와 Tomcat의 JULIJava Logging Framework(java.util.logging)Java 1.4부터 포함된 'java.util.logging' 패키지는 표준화된 로깅 기능을 제공하기 위해 도입되었습니다.하지만 java.util.logging의 경우 JVM 레벨에서 ..

Programming/Web 2024.06.23

(MyBatis) <![CDATA[ ]]>, CDATA 사용 이유 정리

(MyBatis) CDATA란 무엇인지, 왜 사용하는지해당 포스팅은 MyBatis에서 사용되는 'CDATA'는 무엇인지, 또 왜 사용하는지 정리한 내용입니다. XML이란?CDATA에 대해서 살펴보기 전에 CDATA가 사용되는 'XML'에 대해 간략하게 살펴보겠습니다. XML이란 'eXtensible Markup Language'의 줄임말이며, 뜻 그대로 확장 가능한 마크업 언어입니다.또 다른 마크업 언어인 HTML이 웹 페이지를 구성하기 위해 사용되는 반면, XML은 저장되는 데이터의 구조를 기술하기 위한 언어로 데이터를 저장하고 전달하기 위한 목적으로 만들어졌는데요. XML 태그의 경우 HTML 태그처럼 미리 정의되어 있지 않고, 데이터를 설명하기 위한 태그를 사용자가 직접 정의할 수 있다는 특징이 있..

Programming/Web 2024.05.01

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