APACHE 요청(Request)하나 당 프로세스(또는 스레드)가 처리하는 구조 즉 요청이 많을수록 CPU와 메모리사용이 증가 -> 성능 저하 서버의 프로세스가 블록킹이 되면 요청을 처리하지 못하고, 처리가 완료 될 때까지 계속 대기 하는 일이 발생 위의 문제는 Keep Alive를 활성화 함으로써 해결 가능하나, 이 때문에 대량 접속 시 효율이 급격히 떨어지는 다른 문제가 발생 Keep Alive? KeepAlive On -> KeepAliveTimeOut 시간동안 접속을 끊지 않고 다음 접속을 기다림 한 번 연결된 클라이언트와 통신을 유지하고 있기에, 다음 통신시 Connection을 생성하고 끝는 작업이 불필요 성능 향상을 기대 할 수 있음 정적 자원으로만 구성된 웹 서버에 설정시 약 50% 성능 ..
프로세스와 스레드? 프로세스는 운영체제로부터 자원을 할당 받는 작업의 단위 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위 좀 더 자세히... 프로세스는 실행될 때 운영체제로부터프로세서를 할당받고, 운영되기 위해 필요한 주소공간, 메모리 등의 자원도 할당받음 스레드는 하나의 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소공간, 메모리 등의 자원을 프로세스내에 스레드끼리 공유하면서 실행된다 스레드를 왜 사용해? 그러면 여러 프로세스(멀티 프로세스)를 하지 않고 굳이 하나의 프로세스안에 스레드로 나눠서 실행하는가? 운영체제는 시스템작업을 효율적으로 관리하기 위해 존재 -> 이 목적을 달성하기 위함 멀티 스레드의 장점 프로세스 생성, 자원 할당 이라는 시스템 콜을 줄여 자원을 효율..
Proxy Server 프록시 서버의 종류와 역할을 알아보자 Forward Proxy 흐름 Client -> Proxy, FireWall -> Internet -> Server 설명 Client을 대변한다. 외부로 나가기전에 Proxy를 거치므로 Client의 정보를 숨길 수 있다. 같은 이유를 외부를 나가는 Request를 통제 할 수 있다. (내부통신통제) 내부에서 외부로의 통신, Caching을 하면 성능향상 기대 가능 Reverse Proxy 흐름 Client -> Internet -> FireWall, Proxy -> Server 설명 Server를 대변한다. Target서버에 도달하기 전에 Proxy를 거치므로 Target서버의 정보를 숨길 수가 있다. 로드벨런스와 같이 특정 Target서버로..
SQL vs NoSQL 둘의 차이를 비교해보자 비교 SQL NoSQL 규칙에 맞는 데이터 입력 자유로운 데이터 입력 테이블간 JOIN 지원 컬렉션간 JOIN 미지원 트랜잭션 지원 트랜잭션 미지원 안전성, 일관성 확장성, 가용성 용어: 테이블, 로우, 칼럼 용어: 컬렉션, 도큐먼트, 필드 * 트랜잭션의 경우 몽고DB v3에는 지원하지 않으나 v4부터는 지원할 것이라고 한다 NoSQL 등장배경 지난 20년, 트랜잭션을 통한 안정적 데이터 관리가 가능한 RDB가 대세였다 WEB2.0 + 빅데이터의 등장 => 데이터 처리 비용증가로 위기가 왔다 데이터 트래픽 증가 -> 1대에서 실행되는 것으로 설계된 RDB에서는 큰 비용으로 다가옴 스캐일 아웃이아닌 스캐일 업을 해야 하기에 OMG! NoSQL은 일관성을 어느정..
스케일 아웃, 스캐일 업, 로드밸런싱 서버 확장을 위한 방법 스케일 아웃 (Scale out) 서버를 여러 대 추가하여 시스템을 확장 하는 방법 서버가 여러대가 되기에 로드밸런싱이 필수 다중화를 통해서 서버에서 장애가 나더라도 다른 서버에서 대응이 가능 반면 모든 서버가 동일한 데이터를 가지고 있어야기야 데이터 변화가 적은 웹서버에 적합 스케일 업 (Scale up) 서버에 CPU / RAM 등을 추가하거나, 고성능의 부품, 서버로 교환하는 방법 추가적으로 장비를 장착한 여유 슬롯이 있어야 하며 그렇지 않으면 서버 자체를 교환해야 한다 스케일 업의 경우 모든 부하가 서버 한 대에 집중되므로 장애시 위험하다 모든 데이터를 한 곳에서 처리하므로 데이터 갱신이 빈번하게 일어나는 데이터베이스 서버에 적합 로드밸..
풀기전에 처음으로 회사에서 출제되는 문제를 풀어 보았다. 프로그래머스에서 보여지는 난이도는 Level1 이라고 되어 있지만, 왠지 모르게 쫄아서 피했던것 같다. 문제가 꽤나 재미있다. 진짜로 있을 것 같은 케이스라고 할 까? 게임에 있어서 각 스테이지의 실패율을 구하는 문제인데 나는 아래와 같이 풀었다. def solution(N, stages): answer = [0] * N counters = dict() for i in stages: counters[i] = counters.get(i, 0) + 1 for k, v in counters.items(): i = 1 while k > i: answer[i-1] += v i += 1 people = len(stages) for i in range(len(..
다녀온 지는 꽤나 시간이 흘렀지만, 블로깅 해야겠다 싶어서 사진을 찍어 두었다. 아직 날이 추웠던 2월, 콧바람도 쐴겸 에비스로 향했다. 지인의 소개로 알게된 이곳 루파바(Rue Favart). 에비스 가든 플레이스 출구로 나와서 왼쪽으로 길을 따라 걷다보면 큰 사거리가 나오는데, 그곳에 딱 하니 자리 잡고 있다. 타베로그에서도 나쁘지 않은 평을 받고 있는 곳이다. 신호등을 건너고 이윽고 도착한 식당앞에서 나는 메뉴판을 발견 할 수 있었다. 런치메뉴의 구성은 다음과 같다. 고기요리: 돼지고기 등심 소테(*버터를 발라 살짝 지진 고기), 홀그레인 머스타드 소스, 1000엔, 곱배기는 1600엔 생선요리: 도미 뫼니에르(*생선에 밀가루에 버터를 발라 구운 생선), 풍부한 향의 버터 소스, 1000엔 파스타:..
이른바, 뉴욕 3대 스테이크(킨스, 피터 루거, 울프강 스테이크) 중 하나라는 울프강 스테이크 하우스, 도쿄 마루노우치점에 다녀 왔다. 얼마 전 쯔양(유투버)이 가서 모든 스테이크를 클리어 했던 동영상을 봤던지라 더더욱 흥미가 있었던 곳이다. 드레스코드를 지키지 않으면 입장거절 당할 수 도 있다는 정보가 있었기에 간만에 구도도 신고 갔다. 주문한 메뉴는 울프강 샐러드 스테이크 포 투 (stake for two) 랍스타 맥앤치즈 그리고 뉴턴 클라렛 레드 와인을 주문 했다. 먼저, 식전빵이 나왔고 식전빵은 구운양파맛 빵, 일반 바게트, 호두빵이 버터와 함께 나왔다. 맛있었다. 필요하면 리필도 가능했다. 와인 맛은 강하고 달달한 맛이 났다. 육류와 어울렸다. 울프강 샐러드, 이름을 보고 시그니처인가 해서 시켰..