전체 글

DevOps/Docker

[Pinpoint] Elastic Beanstalk, docker환경에서 pinpoint-agent 배포하기

pintpoint를 도입하면서 겪었던 과정에대해서 공유하고자 합니다. 많은 글에서 pinpoint-agent를 설치할때, 직접 config 파일의 collector.ip를 수정해서 설치하는 방법들을 설명하곤 합니다. 하지만, CI/CD , docker를 쓰는 환경에서는 매 배포때마다 Pinpoint Agent를 직접 설치하고 collector.ip를 수정해 줄 수는 없습니다. 따라서, CI/CD환경에서는 2가지 문제가 있었습니다. 1.) Pinpoint Agent 설치 2.) collector.ip 수정 1번에 대한 해결책으로 docker-compose를 사용해서 multi-container로 pinpoint-agent를 도커 컨테이너로 띄워서 볼륨을 호스트와 공유하는 방식을 트렌비 기술블로그(https..

DevOps/Docker

[AWS] Elastic Beanstalk에 docker-compose.yml 사용시 nginx.conf

이전 환경(single-container, 다른 플랫폼(JAVA, Python))에서는 nginx.conf 파일을 재정의 하기 위해서 .platform/nginx/nginx.conf를 위치 하는 방법을 통해 재정의 하였습니다. 하지만, Elastic Beanstalk에서 docker-compose를 통한 배포시 프록시 서버를 컨테이너로 실행한다고 가정하기 때문에, 프록시 서버 설정의 기본값은 없음입니다. 따라서, nginx.conf 파일을 재정의 하고 싶다면, docker-compose에 nginx-proxy 컨테이너를 따로 올려야 합니다. Docker 환경 구성 - AWS Elastic Beanstalk (amazon.com) Docker 환경 구성 - AWS Elastic Beanstalk NGINX..

DB/Redis

[Redis] Lists를 사용한 SNS 타임라인 캐싱

배경SNS 서비스를 개발하다 보면 피드 또는 타임라인 기능은 필수적입니다. 저희 Film it을 개발하면서도 다른 SNS(인스타그램, 페이스북, 트위터, 링크드인 등)처럼 사용자에게 실시간으로 업데이트되는 타임라인을 제공하기 위해 다양한 고민을 했습니다.   문제점기존의 Pull 모델에서는 사용자가 타임라인을 요청할 때마다 실시간으로 데이터베이스에서 필요한 정보를 가져와서 조합합니다. 이 방식은 구현이 비교적 간단하지만, 요청할 때마다 사용자의 모든 팔로잉의 새로운 계시물들을 가져와서 타임라인을 조합해야 하기 때문에, 팔로잉수가 많아질 수록 타임라인을 만드는 시간이 계속해서 늘어날 수 있다고 판단하였습니다.이를 해결하기 위해, 고민했던 방법들과 과정에 대해서 설명하겠습니다. Push 모델   앞선 문..

Algorithm

백준 10844번: 쉬운 계단수 실버 1(파이썬)

문제: https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 입력: 입력으로 받는 N은 계단수의 길이를 의미합니다. 출력: N의 길이를 가지는 계단수 개수를 10**9로 나눈 나머지를 출력하면 됩니다. 따라서, 1의 경우: 1, 2, 3, 4, 5, 6, 7, 8, 9 (9가지) 2의 경우: 10 , 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98 (17가지) 풀이: 2차원 배열을 선언합니다. d[i][j] i = 0 ~ N, i는 자릿수를 뜻합니다. j = 0 ~ 9, j는 자릿수에 들어갈 수 있는..