ElasticSearch를 이용한 고급 검색 기능 구현하기
·
Ruby On Rails
간단한 키워드 검색은 SQL의 LIKE 만으로도 충분합니다.하지만 수만 건 이상의 데이터, 정렬, 유사도 기반 검색, 오타 허용까지 원한다면?이럴 때 필요한 게 바로 ElasticSearch입니다.이번 글에서는 Rails에 ElasticSearch를 연동하여 고급 검색 기능을 구현하는 과정을 설명하고, 단순 텍스트 검색을 넘어 자연어 기반, 정렬, 자동완성 등 다양한 기능을 어떻게 구현하는지 살펴볼게요.🔧 1. 설치 및 기본 설정ElasticSearch 설치 (로컬 테스트용)# macOS (Homebrew)$ brew install elasticsearch$ brew services start elasticsearch기본 포트는 9200이며, http://localhost:9200에서 실행 상태를 확인..
GraphQL with Rails — REST를 넘어서
·
Ruby On Rails
전통적인 REST API는 여전히 강력하지만, 프론트엔드가 복잡해지고 데이터 요구가 다양해질수록 한계가 드러납니다.이제는 하나의 요청으로 필요한 데이터만 정확하게 가져오는 GraphQL이 주목받고 있죠.Rails에서도 graphql-ruby를 통해 쉽게 GraphQL 서버를 구축할 수 있습니다.이번 글에서는 Rails에 GraphQL을 적용해보고, REST와의 차이점과 실전 구현 예시까지 소개할게요.🌐 GraphQL이란?GraphQL은 Facebook이 개발한 데이터 질의 언어로, “필요한 데이터를 정확하게 요청”할 수 있게 해줍니다.하나의 요청으로 다양한 리소스를 조회할 수 있음오버페칭(over-fetching), 언더페칭(under-fetching) 문제 해결엄격한 타입 시스템 기반으로 자동 문서화..
API 서버로서의 Rails — Rails + React/Vue 조합 만들기
·
Ruby On Rails
최근 웹 개발은 백엔드와 프론트엔드의 완전 분리가 일반적인 구조가 되었습니다.이제는 Rails가 전체 HTML을 렌더링하는 대신, JSON API만 제공하는 서버 역할을 하는 경우가 많죠.이런 조합에서는 프론트엔드는 React, Vue 등으로 구축하고, Rails는 API 서버로만 동작이번 글에서는 Rails를 API 모드로 설정하고, React 또는 Vue 프론트엔드와 함께 동작시키는 전체 구조를 다뤄봅니다.🧱 1. Rails API 모드로 새 프로젝트 생성$ rails new backend-api --api--api 옵션을 주면 Rails는 다음과 같은 변경 사항이 적용된 상태로 시작됩니다:뷰 렌더링 미사용 (ERB 등 제외)세션/쿠키 비활성화ActionController::API 기반으로 가벼운 ..
Rails 캐싱 전략 — 페이지, 프래그먼트, 러시아 인형 캐시
·
Ruby On Rails
빠른 웹사이트는 사용자 경험을 향상시키고, 서버 부하도 줄여줍니다.Rails는 이를 위해 강력한 캐싱 기능을 기본 제공하고 있어요.이번 글에서는 Rails의 세 가지 주요 캐싱 전략인 페이지 캐시, 프래그먼트 캐시, 러시아 인형 캐시(Russian Doll Caching)를 하나씩 예제와 함께 설명해볼게요.📄 1. 페이지 캐시 (Page Caching)전체 HTML 페이지를 캐싱해서, 컨트롤러를 거치지 않고 직접 파일을 서빙합니다.하지만 이는 Rails 4 이후 core에서 제거되었고, 현재는 nginx 등 웹서버에서 직접 구현하는 것이 일반적이에요.# 사용 권장 ❌ (대신 nginx로 정적 파일 처리 권장)예전에는 다음과 같이 썼습니다:caches_page :index이 글에서는 더 실용적인 프래그먼..
Rails에서 환경변수 관리 — dotenv와 secrets.yml
·
Ruby On Rails
Rails 애플리케이션을 개발하다 보면 API 키, 비밀번호, DB 비밀 설정 등 민감한 정보를 코드에 직접 넣는 실수를 종종 저지르게 됩니다.이런 정보는 절대 Git에 커밋해서는 안 되고, 환경변수(Environment Variable)로 분리해서 관리하는 것이 필수입니다.이번 글에서는 두 가지 방법 — dotenv로 간편하게 관리하는 방법과, secrets.yml 및 credentials로 Rails 자체 기능을 사용하는 방법을 소개합니다.🌿 1. dotenv — 간단하고 직관적인 방식로컬 개발 환경에서 환경변수를 쉽게 관리할 수 있는 방법입니다.✅ 설치# Gemfilegem 'dotenv-rails', groups: [:development, :test]$ bundle install📁 .env ..
Capistrano로 자동 배포 파이프라인 만들기
·
Ruby On Rails
Heroku로 간편하게 배포해봤다면 이제는 직접 관리하는 서버에 자동 배포 파이프라인을 구축해볼 차례입니다.그 중심에는 바로 Capistrano가 있어요. 이 도구는 로컬에서 명령 한 번으로 원격 서버에 코드 배포, 마이그레이션, 서비스 재시작 등을 자동으로 수행합니다.이번 글에서는 Rails 앱을 Ubuntu 서버에 Capistrano로 자동 배포하는 기본 설정을 단계별로 정리해봅니다.🚀 1. Capistrano 설치# Gemfilegroup :development do gem 'capistrano', require: false gem 'capistrano-rails', require: false gem 'capistrano-rbenv', require: false gem 'capistrano..