본문 바로가기

전체 글26

Spring 환경에서 외부 요청시 받아오는 데이터의 종류는 어떻게 확인 될 까? Spring 환경으로 개발하다보면 추상화가 너무 잘 되어 있어서 쉽게 개발을 하다가 이슈가 있으면 곤란한 경우가 있다. 이전에 공부를 했었을 때 '음.. 요청이 오면 컨버터가 알아서 MIME 타입 확인해서 알맞게 변환해서 처리를 해주네..!' 라고 생각하고 오래 지나서 이 부분까지 신경 쓸 필요가 없었기 때문에 알아서 처리해주는 것이 너무 당연시 되어버렸다. 그러다 보니 난감하지만..?? 재미있는 문제를 만났고 해결 과정에서 Spring이 HTTP 요청의 응답을 어떻게 처리하는지 확인을 해봤다. 문제상황 Python으로 돌아가는 API 서버에 요청을 하고 응답 값을 받아와서 처리하는 서버를 개발하고 있었다. 받아오는 부분은 OpenFeign을 사용해서 간단하게 받아 오려고 했다. 해당 서버는 JSON 데.. 2024. 3. 10.
Server Side Rendering 요즘 웹 서비스 구성들은 프론트엔드, 백엔드 둘로 나뉘어 있고 앞단과 뒷단이 나뉘어져 있는 게 당연하게 여겨지는 것 같다. 요즘 서비스 구성은 간략하게 그림과 같이 구성되어 있다. 사용자가 도메인에 접속하게 되면 웹 서버는 정적 페이지 (HTML, CSS, JavaScript)를 제공하고 해당 페이지에서 백엔드 서버와 통신을 하면서 비지니스 로직이 처리된다. 왜 이런 구조가 거의 표준화 된 듯 사용되는 것일까?? 그냥 하나의 서버로 모든 요청을 처리하면 효율적이지 않을까?? SSR(Server Side Rendering) 하나의 서버로 모든 요청을 처리하는 구조를 서버사이드 렌더링(SSR) 이라고 한다. 말 그대로 서버에서 우리가 보는 페이지를 렌더링 하는 구조이다. 위의 구조에서 보면 SSR은 정적 페.. 2024. 3. 3.
Image Resizing E-commerse 사이트들을 보면 여러 상품의 이미지들이 동일한 사이즈의 크기로 보여진다. 해당 페이지는 쿠팡 메인 페이지에 들어갔을 때 랜더링 되는 이미지들이다. 여기서 궁금한 점이 몇 가지 생기는데 첫 번째는 이 이미지들이 원래부터 동일한 사이즈였는지이다. 즉 해당 사진을 찍거나 생성 할 때 부터 동일한 사이즈였는지다. 물론 간단하게 정답은 아니다. 왜냐면 이미지들을 제공하는 소스들이 다를 것이기 때문이다. (다른 사진기 등등) 두 번째는 많은 사진을 렌더링 할 때 왜 지연이 없을지 여부다. 요즘 핸드폰으로 사진을 찍어도 기본적으로 용량이 0.5MB 정도이다. 어떤 사진은 2MB가 넘어가는 사진도 있다. 이커머스 페이지는 매인 페이지에 대략 20개 정도의 이미지가 보여지게 되는데 10MB의 파일을 .. 2024. 2. 26.
MySQL UTF8MB4 MySQL을 사용하다보면 드는 의문이 있었는데 왜 UTF8이랑 UTF8MB4의 인코딩 타입이 나눠져 있는지다. 특수 문자를 지원하기 위해 인코딩 타입을 UTF8MB4로 변경하고 Collation 까지 변경해주어야 하는 작업을 하다보니 왜 디폴트 값이 UTF8MB4가 아니고 UTF8이 왜 특수문자를 지원을 안 하는지 기존 UTF-8 인코딩 방식이 이모지를 포함하는 걸로 알고 있는데 혼란이 온다. 그래서 하나씩 개념을 정리해가면서 원일을 찾아가보려고 한다. 유니코드 유니코드는 전 세계의 문자 체계를 컴퓨터에서 일관되게 표현하려는 표준이다. 예를 들어서 'A'를 어떤 분야에서 65로 표현하는 것과 다른 분야에서는 700이라고 표현하는 것 즉 일관성이 없는 부분은 분명 혼란스러울 것이다. 그래서 'A'는 65.. 2024. 2. 19.