본문 바로가기

소프트웨어-이야기

[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온프레미스 환경에서는 서버를 띄우려면 ..
[rails]테스트코드 - Rspec rspec gemgem 'rspec-rails'api document - http://rspec.info/documentation/3.5/rspec-rails/ 같이 사용하면 좋은 gemfactory_grilactive record의 mock data를 만들 때 편하다. 테스트 코드를 돌릴 때, test db에 가상의 목데이터를 만들어주고, 테스트코드가 모두 돌아가고 나면 자동으로 rollback을 해준다.gem 'factory_girl'https://github.com/thoughtbot/factory_girl 스터디하기 좋은 동영상 강의code school - rspec https://www.codeschool.com/courses/testing-with-rspec예전에 회사에서 스터디로 했었는데, ..
[passenger] 서버에 올라간 Rails Application 재시작하기 개발 환경 서버에 레일즈 애플리케이션을 올리고, 테스트를 할 때 중간중간에 로그를 추가해서, 로그를 보고 싶을 때가 있다. 이 때 git에 디버깅용 로그를 추가했다가, 지우는건 번거롭다.그래서 서버에 올라가있는 레일즈 코드를 직접 수정해서, 중간중간에 필요한 로그를 보고 싶을 때가 있다. passenger을 통해 레일즈와 웹서버를 연결시킨 경우, 중간에 내가 코드를 직접 수정한건 어플리케이션을 재시작할 때까지는 반영되지 않는다. 포스팅 관련 참고 자료 : restart_app restart를 해줘야하는 이유 restart를 해줘야하는 이유는 영알못이지만 대충 읽어보면..패신저가 여러 프로세스를 갖고 있어서, 애플리케이션을 재시작할 때까지 레일즈 코드를 수정한게 영향을 주지 않는다고 한다. 1. resta..