사전 안내 Rails에서 Redis를 다루는 법은 2개의 포스트로 나뉘어서 설명하겠습니다. 현재 포스트는 Rails에서 지원되는 Cache 메소드를 활용해서 Redis 개발을 할 수 있는 방법론을 다룹니다. 하지만 Redis의 문법(get, set 등)을 직접적으로 사용하지 않다보니, Redis 문법 개념이 좀 둔해질 수 있다는 단점이 존재합니다. Redis의 문법을 직접 사용하면서, Redis 내부에서 어떠한 Flow로 캐싱이 되는지 보고 싶으신 분은 여기를 클릭해서 참고해주세요. 과거의 서버와 클라이언트의 방식은 와와같은 흐름으로 이루어졌었습니다. 웹서버가 Database에 바로 참조를 하고 하는 방식이었는데, 위 방식은 딱 심플하고, 복잡(?)한게 없긴 한데, 한가지 문제점이 있습니다. 너무 많은 ..
사전 안내 Rails에서 Redis를 다루는 법은 2개의 포스트로 나뉘어서 설명하겠습니다. 현재 포스트는 Redis에서 지원되는 문법(get, set 등)을 직접 사용하면서 경험해볼 수 있으나, Rails에서 Cache 기반이 마련되어 있는 인프라를 활용하는 것과는 거리가 먼 방법입니다. 이 글에서 소개될 cache 방법론은 다음에 소개될 Rails 내에서 지원되는 cache 메소드를 활용하는게 아닌 일반적인 redis 문법을 이용한 방법입니다. Rails 내에서 지원되는 Cache 메소드를 활용한 Redis를 다루는 법은 여기를 클릭해서 참고해주세요. 목차 1. Redis 서론 2. Chapter 1 : Redis 설치 3. Chapter 2 : Rails에서 예제 프로젝트 생성 4. Chapter 3..
git add . git add 명령어는 git에 저장되어 있는 HEAD의 위치에서 데이터가 수정되었거나, 새로 생겨난게 있을 시, 해당 순간에 대해 스냅샷을 찍어내는 역할입니다. 하지만 이러한 과정에 있어 실수 사례를 하나 제시해보겠습니다. 원래 위의 노란색으로 표시된 부분의 파일은 git add 리스트에 올라가선 안됩니다. 하지만 제가 실수로 위 2개의 파일에 대해서도 git add 리스트에 올리고 맙니다. 이런 경우엔 add로 올려진 파일에 대해 취소를 해야 합니다. 1. 시작 전, 원래 git add에 대해 취소를 하는 명령어는 다음 명령어로 해야 합니다, git reset HEAD file1_path file2_path ... 하지만 위 명령어는 너무 길다보니 입력하기 귀찮고, 이후에도 단어가 ..
데이터베이스를 다룸에 있어, 때로는 2개 이상의 테이블을 하나로 합친 후, 공통된 데이터에 대해 빠른 탐색 처리를 해야할 필요가 있습니다. 이번 설명은 상황을 하나 제시하여 설명을 하겠습니다. 상황 예를들어 아래와 같은 테이블 설계가 되어있다고 치겠습니다. hit_products 모든 특가 상품 데이터 book_marks 유저(user)가 어떤 특가 상품(hit_products)에 대해 북마크를 했는지에 대한 데이터 keyword_pushalarm_list 유저(user)가 등록한 키워드를 기반으로 받은 핫딜 정보에 대한 푸쉬알람 1. 개발자는 hit_product 테이블 내 데이터 중, 현재(2020년 1월 31일)를 기준으로 하여 작성된지 30일이 지난 데이터를 자동으로 삭제하는 코드를 구현하려 합니..
Jets에서 환경변수 설정에 있어 Figaro Gem과 연동해서 쓰려 할 경우 이상하게 Jets에서는 Figaro Gem을 제대로 설치했음에도 불구하고 인식을 못합니다. 하지만 다행스럽게도 Jets에는 기본적으로 환경변수를 지원을 합니다. 이번 시간에서는 Jets에서 기본적으로 지원하는 기능을 통해 환경변수를 등록하는 법에 대해 알아보겠습니다. 환경변수 개념 환경변수는 쉽게 말하면 "치환" 입니다. 만약 코드 내 중요한 정보에 있어 숨겨야할 경우 정보의 표현을 치환을 통해 은닉처리할 때 많이 쓰입니다. 예를들어, Jets 내 데이터베이스를 설정하는 database.yml 파일을 살펴보겠습니다. ## config/database.yml default: &default adapter: postgresql e..
Ruby on Jets로 배포된 모든 AWS Lambda 함수에 있어 공통적으로 계층(Layer)이 붙습니다. 그리고 이 계층들을 보면 공통적으로 하나의 파일을 가리키고 있습니다. 바로 Ruby on Jets에서 라이브러리 패키지로서 쓰이는 Gem입니다. Gem 같은 경우는 Jets(Rails) 프로젝트를 돌리는데에 있어 근본이자, 핵심입니다. Gem 없이는 일부 백엔드적 기능에 있어선 먹통이 발생될 수 있는 상황입니다. 즉, 계층(Layer)은 모든 Lambda 함수에 있어 공통적으로 필요한 패키지 파일을 언제든 재활용해서 쓸 수 있도록 하는 기능이라고 보면 됩니다. AWS 계층(Layer)의 시작 AWS 계층(Layer)은 2018년 말 AWS Re:Invent에서 발표된 기술입니다. 본래 AWS L..
사실 크롤링은 꼭 AWS Lambda가 아니더라도 AWS EC2 등 환경에서도 Rails를 통해 작업을 해낼 수 있습니다. 하지만 이번에 개인적인 프로젝트를 하면서 EC2서버에 크롤링을 돌리기에는 높은 스펙의 서버가 필요하고, 서버 유지 비용도 만만치 않을것이라고 여겨졌습니다. 그렇게 눈을 돌리게 된 것이 AWS Lamabda 였습니다. AWS Lamabda 환경에서 Selenium 크롤링이 이루어지게 하는 법에 대해 다뤄보겠습니다. (시작 전) Why AWS Lambda than EC2 ? 1. 서버비용 AWS EC2에서 크롤링을 돌리기 위해선 24시간 서버를 켜놔야 합니다. 하지만 시간=돈 입니다. 반면에 AWS Lambda 같은 경우는 일단 프리티어가 아니더라도 100만번 작업 내에서는 Lambda..
프로젝트를 진행함에 있어 과거에 진행했던 AWS Lambda 프로젝트를 정리해야 할 때가 있습니다. 하지만 단순히 AWS 서비스 사용 활용에 있어, Lambda만 있으면 좋겠는데 게이트웨이, Cloud Watch 등 다양한 서비스랑 연계되어 있다보니 섣불리 AWS Lambda와 관련된 서비스를 일일이 찾아내어 해지를 해내는 것도 어렵습니다. 하지만 Ruby on Jets에서는 이를 깔끔하게 해결해주는 명령어가 있습니다. 참고 AWS에 배포된 자료들만 삭제되지, Cloud9에 있는 Ruby on Jets 프로젝트는 삭제가 안됩니다. Jets Project 삭제하기 1. Cloud9에 아래 명령어를 입력해서 AWS에 올려져 있는 Ruby on Jets 관련 프로젝트를 날립니다. 저는 Production 상태..