본문 바로가기

소프트웨어 이야기

레일즈에 Service/Decorator Layer 적용하기(1) - MVC 패턴 이 포스팅은 Build Sleek Rails Components With Plain Old Ruby Objects을 정리한 글입니다 :)시작루비온레일즈는 사용자를 필요로하는 서비스를 빠르게 앱을 만들고, 검증할 수 있다는 장점이 있습니다.그러나 시스템 규모가 커지면 코드는 점점 거대해지고, 복잡해지게 됩니다. 그러다보면 모델이 너무 뚱뚱해져서, MVC에서 말하는 "fat model, skinny controller" 패턴을 버리고 싶어지기도 합니다...
(카오스 엔지니어링)카오스 몽키 카오스 몽키가 생긴 배경 => 넷플릭스에서 IDC에서 AWS으로 이관하면서 탄생했음. 2016년도에 릴리즈되었음카오스 몽키는 golang으로 만들어져있다. go가 설치되어있으면, go get으로 카오스몽키를 다운받을 수 있다. 카오스 몽키를 설치하려면 Spinnaker가 기본으로 설치되어있어야한다. 이게 있어야 몽키가 죽일 클러스터를 만들 수 있다. Spinnaker는 로드 밸런서, 서버 그룹 등등을 테스트 서버에 만들어준다...
(도커) docker component 쓰기 Docker component란?여러개의 애플리케이션 컨테이너를 정의하고, 관리해주는 도구이다.Docker Component 실행하기 docker-compose start이 명령문을 실행하면, 세트로 묶여있는 컨테이너가 동시에 시작된다.Docker Component 끄기docker-compose stop이 명령문을 실행하면, 세트로 묶여있는 컨테이너가 동시에 꺼진다. 컨테이너를 하나하나 끄고 싶을 때는 container stop을 ..
[git] REFLOG - REBASE 취소하기 REBASE를 취소하는 방법잘못 리베이스된 git이 remote까지 반영된 경우, 이걸 취소해야하는 경우가 있다. 이때는 reflog와 reset을 사용하면 된다.1. git reflog 브랜치명이 명령문은 잘못 리베이스한 로컬 컴퓨터에서 실행해야한다. 그래야 리베이스 로그를 볼 수 있다. 그리고 이 명령문은 그냥 로그를 보는 거여서, 막 쳐봐도 된다. 무서워할 필요 없다.2. git reset -- hard 128e6d4reflog를 보고..
(AWS) S3 SELECT - S3 파일에 쿼리 날려서 필요한 데이터만 다운받기 AWS S3 SELECT란?AWS s3 / glacier에 저장된 데이터에 쿼리를 날려서, 필요한 데이터만 다운받을 수 있게 해주는 기능이다. 2018년 3월 기준, glacier select는 모든 리전에서 사용할 수 있지만, s3 select는 아직 프리뷰 상태이다.프리뷰버전에서는 CSV와 JSON 포맷만 지원한다. 그리고 압축 포맷으로는 GZIP만 지원한다.샘플 코드 import boto3 from s3select import..
(번역)Command 아키텍처 기반으로 루비온 레일즈의 Controller Action 리팩토링하기 REFACTORING CONTROLLER ACTION IN RUBY ON RAILS 레일즈 컨트롤러가 뚱뚱해지는 현상을 꽤 많이 봤었다. Medium 눈팅하다가, 레일즈 컨트롤러를 리팩토링했다는 글을 발견했다.  뭔 내용인지 궁금해서 ㅋㅋ 읽어본 내용을 정리해보고자 한다.  컨트롤러는 얄쌍하고, 모델은 뚱뚱하게 로직을 짜는게 루비온레일즈의 MVC 기본 원칙이다.  그러나 시간이 흐르다 보면, 프로젝트는 점점더 커지고 메..
(읽을거리)루비온레일즈 개발자를 위한 DDD 읽을 거리medium 포스팅Ruby on rails DDD => 읽어보니 루비에서는 어떤 느낌으로 DDD를 쓰는지 감이 온다 공식적인 느낌이 드는 ddd-ruby 사이트ddd-ruby.github.io레일즈 앱에서 비즈니스 도메인을 어떻게 관리할 건지 토론하는 페이지 Struggling with complex Rails app and business domain?2012년도에 작성된 sitepoint..
[Redis]Redis에서 LRU Cache를 사용하는 방법 Using Redis as an LRU cache Redis에서는 새로운 값이 추가되었을 때, 자동으로 오래된 데이터를 지워주는 기능이 있다. Memcached 시스템이서도 이러한 기능이 있기 때문에, 개발자들 사이에서는 익숙한 기능이다. 이 포스트에서는 메모리 사용량 제한을 위해서 사용하는 값인 maxmemory, 메모리 관리 정책인 eviction policy, 원조 LRU와 REDIS LRU의 차이에 대해서 이야기할거다. Maxm..
[beanstalk]eb cli으로 배포 시, 주의할점 1년간 빈스톡을 사용하면서, 배포할 때 주의해야했던 점들을 정리하고자 한다.   1. 빈스톡은 local git code를 배포한다. remote에 있는 git code를 땡겨다가 배포하는게 아니다. 그래서 배포하기 직전에, 최신 master code를 로컬로 땡겨온 다음에 배포해야한다.   2. 빈스톡에 있는 모든 인스턴스는 같은 애플리케이션 버전이여야한다. 터미널로 eb deploy 명령문을 실행해서 배포를 하던 도중,..
[beanstalk]애플리케이션 버전 관리 Beanstalk Application Version 빈스톡은 배포 이력을 애플리케이션 버전으로 관리한다. 그래서 새로운 코드를 배포하면, 새로운 애플리케이션 버전이 생성된다.   애플리케이션 버전은 AWS Console 페이지에서 확인할 수 있다. 애플리케이션 버전으로 배포된 코드 이력을 확인할 수 있고, 롤백도 쉽게 할 수 있다.   나는 배포를 할 때, 애플리케이션의 Description을 추가해주고 있다. De..