본문 바로가기

소프트웨어 이야기

[Ruby]루비의 메모리 이슈 루비 메모리 이슈 관련 포스팅 해석 및 따라해보기 블로그 : https://www.toptal.com/ruby/hunting-ruby-memory-issues예제 코드 : https://github.com/lingceng/momery_demo 준비물1. 예제 코드를 다운 받는다 2. Gemfile을 만들어서, 테스트용 스크립트를 돌릴 때 필요한 gem들을 설치한다 예제 코드에서는 Gemfile이 따로 없어서, 나는 아래의 Gemfile을 따로 만들어서 예제 코드를 돌려봤다.이 예제 코드 안에 아래의 Gemfile을 만들고, bundle install을 해주면, Gem들이 설치된다.source 'http://rubygems.org' gem "activerecord" gem "activesupport" ge..
[SPARK] 클러스터 환경 클러스터환경 스파크는 여러 컴퓨터에 설치해놓고, 데이터 분석을 분산처리할 수 있게 해준다. 스파크 클러스터 모델은 마스터 역할을 하는 드라이버 프로그램과 실제로 데이터 처리 역할을 하는 익스큐터로 구성되어있다. 마스터 서버에 설치되어있는 드라이버 프로그램이 여러 워커 노드 서버에 설치되있는 익스큐터들에게 데이터 연산 작업을 시키는 구조인거다. 드라이버 프로그램은 스파크 컨텍스트를 생성하고 관리한다. 드라이버 프로그램에서 메인 함수를 실행하면, 워커 노드들에서 익스큐터 프로세스들이 돌아가게 된다. 스파크 컨텍스트는 데이터베이스의 커넥션 같은 존재이다. 스파크 컨텍스트를 통해 rdd나 어큐뮬레이터 변수 등을 생성하고 사용할 수 있다. 나는 스파크 컨텍스트를 애플리케이션이 돌아가는 동안 여러대의 서버들에서 공..
[AWS]Athena 사용 팁 AWS Athena란?AWS Athena는 S3에 저장된 파일에 쿼리를 날리면, 데이터를 가져올 수 있게 해주는 AWS 서비스이다.구글의 빅쿼리랑 비슷한 서비스이다. AWS Athena를 왜 써야할까?인프라를 관리하지 않아도 된다대용량 로그파일을 분석하려면 이것저것 인프라 셋팅, 관리 등등이 필요하다.예를 들면, 스파크에 S3 로그 파일을 땡겨와서, 스파크 SQL을 날려서 데이터를 추출한다거나...이 경우, 데이터 분석을 위한 인프라를 셋팅해주고 관리해야한다. 그런데 아테나는 서버리스 서비스여서, 이러한 관리가 필요하지 않다. 비용 측면에서 이점이 있다분석을 위해 셋팅해놓은 인프라를 하루종일 꾸준히 쓰는게 아니라 특정한 시간대에만 사용한다거나,갑자기 분석해야하는 데이터가 급증할 경우,인프라가 펑펑 놀고 ..
[루비]RUBY KATA - 알고리즘 문제 풀어보는 사이트 CODE WARS 사이트에 가면, 루비 알고리즘을 풀어볼 수 있다. 루비 말고 다른 언어들도 지원한다. 아래의 주소로 가면, 루비 카타들을 연습해볼 수 있다.https://www.codewars.com/kata/search/ruby?q=
(테스트환경)로컬에 REDIS 환경 만들기 로컬 컴퓨터에서 테스트코드를 돌릴 수 있는 환경을 셋팅하려고, REDIS를 설치했다. 그리고 테스트용 찌꺼기 데이터들이 남는게 싫어서, 데이터들을 FLUSH 하는 방법도 찾아보았다. 설치 방법 설치 경로 : https://redis.io/downloa레디스를 설치한다.$ wget http://download.redis.io/releases/redis-4.0.0.tar.gz $ tar xzf redis-4.0.0.tar.gz $ cd redis-4.0.0 $ make서버 실행 방법redis를 다운받은 후, 압축해제한 폴더 경로에 들어가서 src/redis-server를 실행한다 클라이언트 실행방법redis 폴더 경로에 가서, src/redis-cli 를 친다. 데이터 FLUSH하기 CLIENT를 실행해서,..
[리서치]람다 아키텍처 람다 아키텍처람다 아키텍처란 실시간성 데이터를 처리하는 스피드레이어와 지난 데이터를 다루는 배치레이어를 별도로 두어서 실시간으로 대용량 데이터를 안정적으로 관리하는 방법론이다. 람다 아키텍처 공식 사이트 람다 아키텍처의 특성 - 시스템에 문제가 있어도, 전체적인 기능은 정상적으로 작동된다. - 다양한 종류의 작업에서도 잘 작동한다. - ​처리해야하는 양이 많아도 잘 버텨낸다. - 레이턴시가 짧다. - 확장성이 높다. 요 5가지 특성을 목표로 만들어진 아키텍처라고 한다. 확장성 높은 아키텍처라는 점에서 귀가 솔깃하다. @ㅂ@ 리서치를 하면서 들었던 생각많은 회사에서 람다 아키텍처를 기반으로 데이터 파이프라인을 구축했다 ( 통계 시스템 관련 자료를 찾아보면, 람다 아키텍처라는 이야기가 계속 등장한다. )그리..
(Phusion Passenger) 패신저는 뭐하는애일까 패신저는 프로세스를 관리하는 역할을 한다. 그리고 HTTP Request를 라우팅처리해준다. 패신저에서 프로세스란 개념은 무엇일까?레일즈 애플리케이션 인스턴스를 하나 실행시킨걸, 패신저의 프로세스로 보면 될 것 같다.레일즈 인스턴스를 하나 띄어놓는 것은 패신저가 프로세스를 하나 띄어놓는 것과 같다.그리고 레일즈 인스턴스를 하나 죽이는 것은, 패신저가 프로세스를 하나 죽이는 것과 같다. 패신저의 프로세스 개념에서 알아둬야하는건 뭘까?각 프로세스의 메모리는 다른 프로세스들과 분리된 영역이다. 프로세스 A에서 power_blogger='rails_blogger' 라고 변수를 할당해놔도, 프로세스 B에서는 power_blogger라는 변수를 가져다가 사용할 수 없다. 프로세스들끼리 데이터를 공유하려면 어떻게 해..
(Phusion Passenger) 코드 reload하기 서버에서 접속해서 디버깅용으로 직접 로그를 남겨서 볼 때, 수정된 코드를 반영하기 위해, 패신저를 보통 재시작해줬었다. 그런데 패신저에서 코드를 Reload해주는 명령문이 따로 있었다. 패신저를 재시작해주는건 명령문을 치고, 몇초간 기다려야한다. 그런데 코드를 다시 읽어들이는 Reload는 이보다 더 빠르게 변경된 코드를 패신저에 반영할 수 있다. 단, config/application.rb에 있는 설정정보는 reload되지않는다고 한다.cd /path-to-your-app $ bundle exec passenger-config restart-app /Users/phusion/testapp Restarting /Users/phusion/testapp/public (development)이 명령문을 치면,..