
3. 세션 스토리지로 어떤 것이 더 적합한가? - Disk Based Database VS In Memory Database 저번 글에서는 Scale Out의 데이터 불일치 문제를 해결하기 위한 Sticky Session, Session Clustering, 세션 스토리지 분리 의 다양한 방법에 대해 알아보았다. 그 중 Sticky Session의 특정 서버로 트래픽이 집중되어 발생하는 과부하 문제나 Session Clustering의 세션 복제로 인한 성능적인 한계를 극복하면서도 서버를 추가하는데 용이하다는 점이 Scale Out과 상성이 좋아 세션 스토리지를 분리하기로 했다. 그렇다면 이제 세션 스토리지로 사용할 저장소를 선택해야 한다. Session 그 전에 먼저 우리가 저장하려고 하는 세션에 대해..

2. 여러 대의 서버에 흩어져 있는 세션을 어떻게 관리할 수 있을까? 저번 글에서는 서버의 성능을 향상시킬 수 있는 두 가지 방법, Scale Up과 Scale Out에 대해 알아보았다. 각기 다른 장단 점이 있었지만 여러가지 측면에서 내가 진행하고 있는 SNS 서비스 구현 프로젝트에 더 적합한 방법은 Scale Out이었다. Scale Out을 선택하면 로드밸런싱을 통해 부하를 여러 대의 서버로 분산 처리를 해야만 한다. 이 과정에서 고민거리가 하 나 더 뒤따른다. 바로 데이터 불일치다. 분산 서버 환경에서 발생하는 데이터 불일치 대부분의 웹 서비스는 stateful한 서비스다. 서버에 저장된 사용자의 세션 정보를 기반으로 사용자 맞춤 서비스를 제공할 수 있기 때문이다. 그러나 분산 서버 환경에서 이를..

1. 서버를 어떻게 확장시킬 것인가? - Scale Up VS Scale Out 만약에 내가 만든 이 서비스가 엄청 잘 돼서 사용자 수가 폭발적으로 늘어나고 이 많은 사람들이 동시에 접속한다면 서버 하나로 버틸 수 있을까? 아마 버틸 수 없을 것이다. 그럼 여기 저기서 나타나는 장애들로 인해 서비스 사용자들이 불편을 느낄 것이고, 아무도 나의 서비스를 사용하지 않겠지... 아무튼 이런 대참사(?)를 막기 위해서 대규모 트래픽을 감당할 수 있도록 서버의 성능을 향상시켜야 한다. 어떻게 하면 서버의 성능을 향상시킬 수 있을까? Scalability 서버 아키텍처와 관련하여 구글링을 하다보면 서버의 Scalability가 중요하다고 한다. Scalability is the property of a system..
1. toDo.js const toDoForm = document.querySelector(".js-form-toDo"), toDoInput = toDoForm.querySelector("input"), toDoList = document.querySelector(".js-toDoList") const LS_TODOS = "toDos"; let toDos = []; function deleteToDo(event){ const btn = event.target; // event.target: 클릭된 요소 반환 const li = btn.parentNode; toDoList.removeChild(li); // element.removeChild: 지정된 자식 요소 삭제 const cleanToDos = to..
1. 문제 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 arr return 10 true 12 true 11 false 13 false 입출력 예 설명 입출력 예 #1 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 입출력 예 #2 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다. 입출력 예 #3 11의 모든 ..
1. 문제 문제 설명 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 제한 사항 str은 길이 1 이상인 문자열입니다. 입출력 예 s return Zbcdefg gfedcbZ 2. 풀이 과정 처음에는 다음과 같이 풀었었다. def solution(s): return ("".join(list(reversed(s)))) 테스트 케이스는 통과를 했으나 채점하면 통과를 하지 못하였다. 그 이유는 테스트 케이스는 거꾸로 뒤집기만 해도 잘 정렬되는 케이스였기 때문이다. 'slkeELkjd' 같은 아무 문자열을 실행해보면 'djkLEekls' 처럼 그냥 거꾸로..
1. 문제 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 4 이상, 20이하인 문자열입니다. 입출력 예 phone_number return 01033334444 ***4444 027778888 *****8888 2. 풀이 과정 def solution(p_num): return p_num.replace(p_num[:-4], len(p_num[:-4]) * "*") 3. 다른 사람의 풀이 def hide_numbers(s): return "*"*(le..
: 사용자 로컬에 데이터를 저장하는 저장소 단순한 key-value 저장소이며, key와 value는 항상 문자열로 저장됨 도메인과 브라우저 별로 데이터를 저장 localStorage와 sessionStorage 두 가지가 있다. localStorage 사용자가 직접 지우지 않는 이상 계속해서 데이터가 유지됨 sessionStorage: 동일한 세션에서만 사용 가능 (브라우저를 닫을 경우, 데이터가 제거됨) 따라서, 지속적으로 사용해야 할 데이터는 localStorage에 일회성 데이터는 sessionStorage에 저장 다음은 localStorage 사용법이며, sessionStorage도 이와 유사하다. // 데이터 저장 - (key, value)의 json 형태로 저장된다. localStorage...
- Total
- Today
- Yesterday
- Django 좋아요
- python
- Django 비밀번호 수정
- Django 로그인
- Django Instagram
- Django 업로드
- Django 프로젝트 생성
- Django 댓글
- Django application
- Django 해시태그
- Django 어플리케이션
- Django 회원가입
- java
- Django 북마크
- Django 팔로우
- Django User
- MySQL
- Django 회원 정보 수정
- Django 검색
- Redis
- 장고
- Django
- query parameter
- 서점 어플리케이션
- Django 인스타그램
- 파이썬
- Django 컬렉션
- Redis Cache
- Django 로그아웃
- 북마크 어플리케이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |