전체 글

성장하기 위한 기록들
🎨 Programming/Spring Boot

[Spring Boot] 쿠키로 게시글 조회수 증가, 중복 방지

🚨 이슈 상황 게시글을 조회했을 때 조회수가 증가해야하는 데, 새로고침을 해도 조회수가 계속 증가하는 문제가 생겼다. 이를 보완하기 위해 찾아보다가 쿠키로 적용 시킨 방법이다. 🔎 개선 방안 💡 IP 장점 조작이 불가능하다(해킹하지않는한) 단점 IP는 장소에 따라 유동적으로 변할 수 있는 문제점이 있다. MAC 주소와 같은 유저라도 다른 기기라면 다른 유저로 식별하게 된다. IP와 MAC 주소는 값이 길기 때문에 수많은 유저와 수많은 게시글과 날짜를 함께 저장하기에 문제가 있다. 💡 세션 - 세션의 특징으로는 사용자 정보를 서버에서 관리하는 것입니다. 장점 사용자 정보를 서버에 둔다는 뜻은 쿠키보다 보안에 좋다. 저장데이터에 제한이 없다.(서버 성능에 따라 다름) 단점 서버에 데이터를 저장한다는 것은 서..

🌏 DataBase/MySQL

[MySQL] 전문 검색 기능 : FullText Search

🚨 이슈 상황 회사 내부 ERP 시스템에서 검색 기능을 구현하였다. ㅜㅜ 데이터가 많이 쌓이면서 검색이 느리다는 이슈 사항이 있었다. 처리를 하기에 앞서 어떻게 바꾸면 좋을 것인지 생각하면서 정리를 해 본 글이다. 초반에는 Elasticsearch를 이용해서 구현을 해보려고 목표를 잡았으나, 주어진 작업시간이 짧고 리소스가 많이 드는 기술이기 때문에 다른방법을 찾다가 FullText Search에 대해 알게 되었다. 🔎 검색 기능을 구현하기 위한 몇가지 방안 1. 검색 엔진 Elasticsearch 💡 Elasticsearch 란 ? Elasticsearch 는 Apache Lucene( 아파치 루씬 ) 기반의 Java 오픈소스 분산 검색 엔진입니다. Elasticsearch를 통해 루씬 라이브러리를 단..

🌌 Server

스케일 업(Scale-UP), 스케일 아웃(Scale-OUT) 이란?

💡 서버 확장 전략 서버를 운영하다보면 사용자가 늘어남에 따라서 트래픽에 한계에 도달하고 이를 해결하기 위해 서버를 확장하고자 한다. 서버를 확장하기 위한 크게 스케일 업(Scale-UP)과 스케일 아웃(Scale-OUT)이 있다. 📌 스케일 업(Scale-up) 기존 하나의 서버의 사양을 업그레이드하여 시스템을 확장하는 것을 말한다. CPU 또는RAM(memory) 등을추가하거나 고성능 부품으로 교체하는 방법이다. 간단하게 말하면, 물리적 장비 교체이다. 이처럼 하나의 서버의 사양을 업그레이드 하기 때문에 수직 스케일로 불리기도 한다. 👍장점👍 - 추가적인 네트워크 연결 없이 용량을 증강할 수 있다. - 스케일 아웃보다 비교적 관리 비용이나 운영 이슈가 적고, 비교적 간단하다. - 서버의 개수가 1대이..

📚 Computer Science/Network

[모든 개발자를 위한 HTTP 웹 기본 지식] 7. HTTP 헤더2 (캐시와 조건부 요청) - 캐시 무효화

인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. Cache-Control 💡 확실한 캐시 무효화 응답 Q. 캐시를 적용 안하면 캐시가 안되는것이 아닌가? A. 캐시를 적용안해도 get 요청인 경우 웹브라우저가 임의로 적용하는 경우도 있다. 1) Cache-Control: no-cache, no-store, must-revalidate 2) Pragma: no-cache - HTTP 1.0 하위 호환 ex) 통장 잔고 💡 캐시 지시어(directives) - 확실한 캐시 무효화 1) Cache-Control: no-cache - 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용(이름에 주의!) 2) Cache-Control: no-store -..

📚 Computer Science/Network

[모든 개발자를 위한 HTTP 웹 기본 지식] 7. HTTP 헤더2 (캐시와 조건부 요청) - 프록시 캐시

인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 원(origin) 서버 직접 접근 - 브라우저에서 원서버에 이미지를 다운로드 받는 시간이 약 0.5초 걸린다고 가정해보자. 그렇다면 응답이 너무 느려진다는 단점이 있다. 2. 프록시 캐시 도입 👉 첫 번째 요청 1) 한국 어딘가 프록시 캐시 서버를 넣어놓고 브라우저에서 요청을 하면 미국 원서버에 직접 요청을 하지 않고 프록시 서버에 거쳐서 오게 된다. 브라우저가 프록시 캐시 서버에 접근하면 응답을 빠르게 받을 수 있다. ex) 유튜브 인기 없는 동영상을 다운로드 받게 된다면 속도가 느리지만 인기 있는 동영상인 경우 프록시 캐시 서버에 있기 때문에 속도가 빠르다. 2) 보통 처음 데이터에 접근을 하게 되..

📚 Computer Science/Network

[모든 개발자를 위한 HTTP 웹 기본 지식] 7. HTTP 헤더2 (캐시와 조건부 요청) - 캐시와 조건부 요청 헤더

인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 캐시 제어 헤더 👉 Cache-Control ⭐⭐ 캐시 제어, 캐시 지시어(directives) - 캐시 유효 시간, 초 단위 (유연하게 설정 가능) - 데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용 - 데이터에 민감한 정보가 있으므로 저장❌ (메모리에서 사용하고 최대한 빨리 삭제) 👉 Pragma 캐시 제어(하위 호환) - HTTP 1.0 하위 호환 - 현재는 거의 사용❌, 하위 호환으로 필요한 경우 사용할 때도 있음 👉 Expires 캐시 만료일 지정(하위 호환) - 캐시 만료일을 정확한 날짜로 지정 - HTTP 1.0 부터 사용 - 지금은 더 유연한 Cache-Contro..

📚 Computer Science/Network

[모든 개발자를 위한 HTTP 웹 기본 지식] 7. HTTP 헤더2 (캐시와 조건부 요청) - 검증 헤더와 조건부 요청2

인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 검증 헤더와 조건부 요청 💡 개념과 사용 1) 검증 헤더 - 캐시 데이터와 서버 데이터가 같은지 검증하는 데이터 - Last-Modified , ETag 2) 조건부 요청 헤더 - 검증 헤더로 조건에 따른 분기 - If-Modified-Since: Last-Modified 사용 - If-None-Match: ETag 사용 - 조건이 만족하면 200 OK - 조건이 만족하지 않으면 304 Not Modified 🔎 예시 If-Modified-Since: 이후에 데이터가 수정되었으면? 1) 데이터 미변경 예시 - 캐시: 2020년 11월 10일 10:00:00 vs 서버: 2020년 11월 10일 10:0..

📚 Computer Science/Network

[모든 개발자를 위한 HTTP 웹 기본 지식] 7. HTTP 헤더2 (캐시와 조건부 요청) - 검증 헤더와 조건부 요청1

인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 캐시 시간 초과 캐시 유효 시간이 초과해서 서버에 다시 요청하면 다음 두 가지 상황이 나타난다. 1) 서버에서 기존 데이터를 변경⭕ - 서버에서 변경된 데이터를 받는다. 2) 서버에서 기존 데이터를 변경❌ - 데이터를 전송하는 대신에 저장해 두었던 캐시를 재사용 할 수 있다. - 단, 클라이언트의 데이터와 서버의 데이터가 같다는 사실을 확인할 수 있는 방법이 필요 2. 검증 헤더 추가 👉 첫 번째 요청 1) 웹브라우저에서 star.jpg를 요청하면, 서버는 cache-control과 Last-Modified(데이터 마지막 수정된 시간 = 데이터 최종 수정일)을 HTTP 헤더에 추가하여 응답한다. 2) ..

📚 Computer Science/Network

[모든 개발자를 위한 HTTP 웹 기본 지식] 7. HTTP 헤더2 (캐시와 조건부 요청) - 캐시 기본 동작

인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 캐시가 없을 때 👉 첫 번째 요청 1) 웹브라우저에서 /star.jpg 이미지를 서버에 요청하면, 서버에서 HTTP 헤더(0.1M) + HTTP 바디(1.0M) star.jpg에 대한 응답을 보낸다. 2) 웹브라우저에 이미지가 표시된다. 👉 두 번째 요청 1) 웹브라우저에서 /star.jpg 이미지를 서버에 두번째 요청하면, 서버에서 HTTP 헤더(0.1M) + HTTP 바디(1.0M) star.jpg에 대한 응답을 보낸다. 2) 웹브라우저에 이미지가 표시된다. 💡 캐시가 없을 때 특징 - 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. - 인터넷 네트워크는 매우 느리고..

📚 Computer Science/Network

[모든 개발자를 위한 HTTP 웹 기본 지식] 7. HTTP 헤더1 (일반 헤더) - 인증, 쿠키

인프런 김영한님 [모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.😊😊 1. 인증 👉 Authorization 클라이언트 인증 정보를 서버에 전달 - value 값은 인증 방식(OAuth)에 따라 다양함(필요하면 검색) 👉 WWW-Authenticate 리소스 접근시 필요한 인증 방법 정의 - 401 Unauthorized 응답과 함께 사용 2. 쿠키 ⭐⭐ • Set-Cookie: 서버 -> 클라이언트 쿠키 전달(응답) • Cookie: 클라이언트가 서버에서 받은 쿠키를 저장, 클라이언트 -> 서버 쿠키 전달(요청) 👉 쿠키 미사용 1) 처음 welcome 페이지 접근 - 로그인 하지 않은 사용자가 웹 브라우저에서 /welcome 으로 요청하면 서버에서 안녕하세요 손님으로 응답..

ryang x2
개발ING