본문 바로가기

소프트웨어-이야기

(Phusion Passenger) 패신저에서 트래픽을 어떻게 분산시켜줄까? 패신저의 Request LoadBalancing Pushion Passenger는 프로세스를 관리하고, HTTP Request를 라우팅처리해준다.그리고 패신저는 성능 최적화를 위해 CPU 코어에 대한 처리를 분산시키거나, 응답시간을 최소화하기 위해 제일 놀고있는 프로세스에서 HTTP Request가 처리될 수 있게 해준다. 이 포스팅은 루비온레일즈에 셋팅된 패신저에서 로드밸런싱 처리를 해주는 방법에 대한 내용을 담고 있다. 루비온레일즈는 기본적으로 한 번에 한 요청을 처리한다.그래서 패신저는 어플리케이션에서 여러 프로세스들이 작동될 수 있게 해주는 역할을 한다. ( 프로세스마다 어플리케이션의 인스턴스를 하나씩 띄우는 개념인 것같다. 개발환경에서 레일즈 앱을 하나 띄우는 것처럼, 패신저가 레일즈 앱을 알아..
(Phusion Passenger) Rails + Nginx 최적화를 위한 설정값 지난주는 인프라에 이리치이고 저리치였던 주였다. ㅠㅠ 서버의 메모리 사용량에 이리치이고 저리치이면서 패신저의 프로세스 상태를 확인하고, 설정값들을 변경해줘야하는 상황들이 발생했다. 패신저란.. 레일즈애플리케이션과 웹서버를 연결해주는 중간다리쯤정도만 생각했었다. 그런데 이번주는 패신저에 대해서 더 잘 알아두면 좋을 것 같단 생각을 한 주였다. 이래저래.. 큰불들은 꺼졌지만, 까먹기전에 패신저에 대한 내용들을 찾아서 정리해보고자 한다. 아 ㅎ ㅎ ! 이 포스팅의 내용은 루비 + 엔진엑스로 패신저 조합의 이야기이다. A. 패신저 프로세스 수 조절하기 이번주는 적당한 프로세스 수를 찾기 위해 이렇게 저렇게 설정해보고, 메모리에 치이고, 리퀘스트 큐에 치이는 한주였다. 패신저에서는 프로세스 수를 동적으로 생성할 ..
[HTTP] HTTP 2의 탄생 배경과 특징 팀에서 HTTP 2에 대한 내용을 간단하게 ㅎㅎ 발표하기로 했다. 그래서 준비중이다.그런데 피피티로 쓰는 것 보다 글로 정리하는게 더 나을것 같아서, 에버노트 대신 블로그에 포스팅을 하려고 한다.( 결국 이 포스팅을 읽으면서 발표했다 ㅎㅎ ) A.https://www.httpvshttps.com/이 사이트에 들어가면, HTTP 1과 HTTP2의 웹페이지 랜딩 속도를 비교해볼 수 있다.보면, HTTP2가 HTTP1보다 절반은 빠르다. HTTP2는 이전 버전에 비해, 속도 측면에서 큰 변화가 있었다. HTTP2는 보안 강화라는 특징도 갖고 있지만, 이번 시간에는 HTTP2가 웹페이지를 요청하고, 응답받을 때까지 기다려야하는 시간을 어떻게 단축했는지에 대한 내용에 집중에서 이야기하려고 한다. B. HTTP 2..
[RAILS] association_basics counter_cache 레일즈 가이드에 counter_cache라는 개념이 있길래, 뭔지 궁금해서 찾아봤다.class Comment < ApplicationRecord belongs_to :post, counter_cache: trueendclass Post < ApplicationRecord has_many :commentsend예를 들어, 게시물의 리스트를 조회하는 페이지를 만든다고 생각해보자. 이 때, 게시물(Post)에는 댓글(Comment)가 남는 다.이 때, 아래의 예제 코드처럼, 루프를 돌때마다 댓글의 크기를 세면N+1 쿼리 문제가 발생하게 된다. Started GET "/posts" for ::1 at 2016-03-16 23:47:08 -0700 ActiveRecord::SchemaMigration Load (..
(넷플릭스) 데이터과학을 기반으로한 넷플릭스의 스트리밍 최적화 넷플릭스에서 QoE를 높이기 위해 하고 있는 것들에 대한 내용을 정리하고자 한다. 이 포스팅은 Optimizing the Netflix Streaming Experience with Data Science 이 블로그 글을 참고하여 작성하였다. 넷플릭스는 영화 추천 뿐만 아니라, 체감 품질(QoE / quality of experience)에도 많은 투자를 하고 있는 서비스이다. 넷플릭스는 체감 품질(QoE)를 위해, 스트리밍 서비스의 품질에 많은 노력을 기하고 있다. 이를 위해서 Adaptive Streaming과 Open Connect 같은 네트워크 기술에 많은 투자를 하고 있기도 하다.그리고 스트리밍 기술에 집중하기 위하여, 데이터를 기반으로 스트리밍 서비스를 개발하는 별도의 팀을 구성하기도 했다. ..
[IT기획] 과제 분석을 잘하는 방법 리서치 1. 프로덕트 스펙 문서 작성법 ★★★★★https://brunch.co.kr/@hj-kang/2 과제 분석을 하는 일하는 방법이 고대로 써있다. 스펙문서를 작성해야하는 이유 3가지가 씌여져 있는데, 첫번째 이유가 나에게 가장 와닿았다.과제분석을 시작하면서, 문제를 해결할 수 있는 가장 컴팩트한 방법이 뭔지 고민했었다.그래서 영업실을 통해 받은 요구사항을 쪼갤 수 있는 방법을 생각했다. 혹은 이 요구사항 외에도 문제를 해결할 수 있는 솔루션이 있는지 고민해봤다.그리고 이 쪼갠 요소들 중에 문제를 해결하는 데에 결정적인 역할을 하는게 뭔지 고민했었다. 생각해보면, 위에서 언급된 '비싼 작업'이 시작되기 전에 먼저 구체적인 부분에 대해서 생각하게 한다 는 장점(?)을 달성해가는 과정이였던거 같다. 초기단계 ..
루비온레일즈에서 Class 메서드와 Instance 메서드 이해하기 루비온레일즈에서의 클래스 메서드와 인스턴스 메서드를 어떨 때 사용하는지 찾아봤다.그런데 뭐... 루비라고 특별히 다른건 아닌거같고, 다 비슷하긴 해보인다. 참고한 포스팅http://culttt.com/2015/06/10/understanding-class-methods-verses-instance-methods-in-ruby/ 클래스 메서드란?클래스 메서드는 클래스에 정의된 메서드를 말한다. 이어서 예제 코드를 보고 설명하고자 한다 ㅎㅎ class User def self.find(id) puts "finding user with the id of #{id}" end end 보통.. ㅎㅎ 저렇게 id를 넘기면 user 객체를 리턴시켜준다.아무튼.. class 메서드는 앞에 self를 붙여준다. class..
[Docker]완벽한 IT 인프라 구축을 위한 Docker 1-5 인프라에 대한 기초 지식온프레미스 : 시스템 구축에서 부터 운영까지 자사에 데이터센터를 두고 수행하는 형태를 의미한다. 1-5 인프라 구성관리에 대한 기초 지식 클라우드 시스템과 가상화 기술의 등장으로 이하여, 온프레미스에서는 구축하기 어려웠던 서버 / 네트워크을 이전보다 간단하게 구축할 수 있게 되었다. 이제는 인프라 변경이 필요할 때, 구축된 인프라를 파기하고, 새로 구축하는 것이 가능하게 되었다. 이전 처럼 인프라 변경 이력을 관리할 필요성이 줄어들었다. 이제는 현재 가동 중인 인프라 상태만 관리하면 되는 환경으로 변하고 있다. 이러한 인프라를 Immutable infrastructure (불변 인프라)라고 한다. infrastructure as code온프레미스 환경에서는 서버를 띄우려면 ..