2025/01 29

대규모 트래픽 발생 시 해결 방안 및 서버 과부하 방지

요즘 면접 질문에도 많이 나온는 주제인  대규모 트래픽에 관한 얘기입니다.예를들어 하루 평균 접속자 수가 100명인 쇼핑몰에서 그 날 라이브쇼핑이 대박이 난겁니다.동시접속자 수가 1만명이 되는 순간 서버가 다운되고 말았습니다.이러면 회사입장에서 손해가 막심할 수 밖에 없습니다. 이러한 현상이 왜 일어나는지그리고 방지하려면 어떻게 해야하는지 알아봅시다.  발생원인 기본적으로 한 사람이 서버에 접속하게되면 가장 기본적으로 이 사람에 대한1. 아이디 및 비밀번호를 체크해 로그인을 해야 하고2. 이 사람이 쇼핑을 할 수 있게 쇼핑몰이 가지고 있는 제품을 보여줘야하고3. 찜하기, 장바구기 넣기 등의 데이터를 물고있어야하며4. 결제 시 API요청 해 구매가 되고 구매가의 %의 포인트 및 쿠폰을 지급하며5. 물건 수..

WIFI(무선랜) 주파수 2.4GHz와 5GHz차이 그리고 대역폭

흔히 사용하는 와이파이에는 2.4GHz와 5GHz가 있을 것 이다.어떤 상황에서 어떤 주파수를 이용해야 좀 더 빠르고 원활한 데이터 수급이 가능한지 알아보자. 먼저 와이파이는 공기중에 주파수를 쏘아 신호를 전달하는 방법인데요.위의 그림과 같이 2.4 GHz 는 파동이 크지만 Y축의 거리가 멀어 속도가 느리며5 GHz 는 파동이 작은대신 속도가 빠르게 전파됩니다. 그렇다면 어떤 상황에서 어떤 주파수를 쓰는게 유리할까? 사진만 봐서는 이게 무엇인지 감이 안잡힐 것 이다.  2.4 GHz 의 특징을 보면 속도가 느린 대신 파장이 크다. 즉, 속도는 늦지만 강하고 멀리간다 는 장점이 있습니다. * 공유기로부터의 장애물이나 사각지대가 많은 지형* 공유기로부터 먼 거리의 지형* 좀 오래된 기기로 인해 와이파이 연결..

List<Map<key,value>> 형태를 JSONArray로 변환하기

오늘은 List>과 Map를 JSON형태로 변환하는 과정에 대해 알아보자. /*테스트용 List> 생성*/List> testList = new ArrayList();Map testMap1 = new HashMap();Map testMap2 = new HashMap();Map testMap3 = new HashMap();testMap1.put("key1","value1");testMap2.put("key2","value2");testMap3.put("key3","value3");testList.add(testMap1);testList.add(testMap2);testList.add(testMap3);먼저 위와 같은 ListMap이 있다고 가정하겠습니다 /*ListMap을 JsonArray로 변환하는 함수*..

TCP/IP 레이어별 네트워크 장치(L1~L7스위치, 허브, 라우터 등)의 역할

먼저 TCP/IP 4계층에 대해 개념을 정리하고 보시면 도움이됩니다.https://steady-snb.tistory.com/25 TCP/IP 4계층? OSI 7계층? 이 도대체 뭘까TCP/IP 4계층이란? 인터넷상에서 데이터를 주고받을 때 쓰이는 프로토콜의 모음입니다. OSI 7계층이란? 위에서 설명한 프로토콜에 대한 디자인과 통신을 계층으로 나누어 설명하기 위한 모델입steady-snb.tistory.com TCP/IP 계층별로 담당하는 네트워크 장비들이 존재합니다. 애플리케이션 계층 : L7스위치전송계층 : L4스위치인터넷 계층(네트워크 계층) : 라우터, L3스위치데이터 링크 계층 : L2스위치, 브리지물리계층 : NIC, 리피터, AP  애플리케이션 계층 L7 스위치는 로드밸런서라고도 불리우며 O..

HTTP메서드 멱등성의 정의와 API에서 멱등성 구현법

HTTP멱등성이란? 하나의 요청이 아닌 여러번 동일한 요청의 보냈을 때 서버가 같은 상태를 가지는 것을 멱등성이라고 합니다.만약 HTTP의 요청이 멱등하다면, 요청이 실패한 경우 주저없이 재시도 요청을 하면 되지만요청이 멱등하지 않다면, 리소스는 이미 처리되었는데 중복으로 요청을 보낼 수 있게됩니다.예를들어 결제 후 처리과정에서 오류가 났을 경우 이미 결제된 건에 대해 재요청을 하게되면 문제가 될 것 입니다.그래서 클라이언트는 멱등성을 고려하여 재시도 요청을 해야합니다. HTTP메서드의 멱등여부 GET, PUT, DELETE처럼 리소스를 조회하거나 대체하는 메서드는 멱등합니다.PUT은 여러 번 호출해도 매번 같은 리소스로 업데이트되기 때문에 결과가 달라지지 않습니다.DELETE 역시 여러 번 호출해도 삭..

HTTP메서드 GET, POST의 정의 및 차이점에 대해 알아보자

클라이언트와 서버를 통신에 사용되는 HTTP 요청 메서드에는 GET, POST, PUT, PATCH, DELETE 등이 존재합니다.이 메서드 중 가장 자주 쓰이는 GET방식과 POST방식의 차이와 쓰임새에 대해 알아봅시다.   GET방식은 주로 서버에서 데이터를 조회하는 용도로 사용되며 요청된 데이터는 URL의 쿼리 스트링을 통해 전달됩니다. POST방식은 서버에 리소스를 처리(주로 데이터를 추가하거나 수정)할 때 사용되며주로 HTTP메세지의 Body에 데이터를 담아 전송합니다.   GET과 POST방식의 차이점 - 가시성 GET요청에서는 데이터가 URL에 노출되므로 브라우저 기록, 서버 로그 및 네트워크의 다른 사람들에게 보일 수 있습니다.POST요청은 Body에 데이터를 담아 보내기 때문에 좀 더 높..

HTTP 상태 코드(1XX~5XX)에 대해 알아보자.

HTTP 상태 코드는 클라이언트가 보낸 HTTP요청이 성공했는지 실패했는지를 숫자로 나타낸 것 입니다.기본적으로 네이버에 접속 후 개발자 도구를 키시고 네트워크 탭을 보시면위의 그림과 같이 Status에 200이라고 떠있는걸 볼 수 있는데 이것이 HTTP 상태 코드입니다. 이 코드값은 크게 보면 앞의 숫자에 따라 위의 그림과 같은 상태를 담당하고뒤에 세부적으로 따라오는 숫자에 따라 원인을 다르게 나타냅니다. 출처 - https://hongong.hanbit.co.kr/http-%EC%83%81%ED%83%9C-%EC%BD%94%EB%93%9C-%ED%91%9C-1xx-5xx-%EC%A0%84%EC%B2%B4-%EC%9A%94%EC%95%BD-%EC%A0%95%EB%A6%AC/ [웹 프로그래밍] HTTP ..

세션과 토큰을 이용한 로그인 인증 방식의 장단점

HTTP에 대해 간략히 알아두면 도움이 됩니다.https://steady-snb.tistory.com/28 애플리케이션 계층(HTTP, SSH, FTP, SMTP 등)에 대해 알아보자HTTP(Hyper Text Transfer Protocol) 서버와 클라이언트 간의 데이터를 주고 받기 위해 설계된 프로토콜입니다.HTTP 통신은 클라이언트(Front-End)와 서버(Back-End)로 나뉘어져 있다.클라이언트가 요청(Request)steady-snb.tistory.com HTTP의 특징 중 하나인 무상태(Stateless)로 인해 클라이언트와 서버가 데이터를 주고 받을 시 요청이 끝나면사용자의 정보가 더 이상 남아있지 않습니다.그렇다면 최초 로그인 후 어떻게 사용자 정보를 보관하여 로그인을 유지할 수 있..

웹취약점(XSS, 자동화공격) 보완하기

웹 취약점 중 하나인 XSS(Cross Site Scripting)와 자동화공격에 대해 알아보고 대처할 수 있는 방법에 대해 알아보자. 1. XSS( Cross Site Scripting ) XSS는 게시판이나 웹 메일 등에 자바 스크립트와 같은 스크립트 코드를 삽입해 공격을 하는 해킹 기법 중 하나이다.위의 그림과 같이 게시판이나 댓글 등 스크립트를 적어 세션을 탈취하는 등에 피해를 입힙니다. 해결방법은 입력값에 대한 문자열 중 특수문자에 대한 문자를 HTML Entity로 치환하는 것인데 ex) XSS방지 함수 적용String postContent = request.getParameter("postContent");if ( postContent != null || postContent != "") {..

로컬 스토리지, 세션 스토리지, 쿠키의 정의와 차이점

https://steady-snb.tistory.com/28 애플리케이션 계층(HTTP, SSH, FTP, SMTP 등)에 대해 알아보자HTTP(Hyper Text Transfer Protocol) 서버와 클라이언트 간의 데이터를 주고 받기 위해 설계된 프로토콜입니다.HTTP 통신은 클라이언트(Front-End)와 서버(Back-End)로 나뉘어져 있다.클라이언트가 요청(Request)steady-snb.tistory.com이전에 다루었던 HTTP의 통신방법과 특징에 대해 참고하시면 도움이됩니다. 먼저 HTTP라는 프로토콜의 웹 통신방식에 대해 간략히 알아보자면 웹은 클라이언트에서 HTTP Request를 통해서버로 요청을 보내면 서버에서 HTTP Response로 응답을 하게되는 형태입니다.여기서 HT..