-
협업지점 조회 성능 개선
1. 문제 정의 기존 코드는 개발 일정을 맞추기 위해 성능의 이슈를 감안하더라도 기능 완성에 초점을 두었습니다. 또한 프론트엔드와의 개발 일정이 맞지 않아 기능을 개발한 후 바로 최적화할 수 없는 상황이었습니다. 현재는 양 측이 모두 개발이 완료된 상황이라 코드를 분석해보니 많은 문제점을 발견할 수 있... Read More
-
캐시를 통한 성능 최적화
1. 문제 정의 업브렐라 서비스의 특성 상 협업지점의 CUD는 자주 일어나지 않지만, 조회 API는 자주 호출되고 있습니다. 협업지점 조회 API는 여러 테이블이 조인을 하고, 자주 호출되는데 이것이 매번 호출되면 DB의 부하 증가로 이어지게 됩니다. 따라서 업브렐라 개발팀은 Redis를 이용하여 DB 데이터를 캐싱하... Read More
-
Loki를 통한 로그 모니터링
1. 문제 정의 업브렐라 서버팀은 ELK를 사용하여 로그 모니터링을 하려고 했습니다. 하지만 무거운 ELK를 감당하기에는 서버 비용이 부담이 들었고, 비교적 가볍게 실행할 수 있는 Grafana를 로그 모니터링 툴로 선택하게 되었습니다. 2. Grafana 2 - 1 Grafana란?... Read More
-
nGrinder 자동화
1. 문제 정의 nGrinder를 사용해서 부하테스트를 하는 이유는 지난 게시글를 통해 알아보았습니다. 하지만 매번 배포를 할때마다 개발자가 nGrinder 서버를 띄워서 테스트 하는건 자원의 낭비라고 생각해서 자동화하기로 결정하였습니다. 2. nGrinder 자동화 도입 2-1... Read More
-
JPA Repository는 Entity만을 조회해야할까?
1. 문제 정의 대여 기록을 관리하기 위해서는 여러 테이블과의 조인이 필요합니다. 문제는 여기서 발생하는데요, 기존의 업브렐라 개발팀은 개발 속도 및 편의를 위해 JPA Repository에서 Entity만 조회하였습니다. 하지만 이는 성능에 많은 영향을 미치고 있었습니다. 2. 대여 기록 분석 대여 기록은 ... Read More
-
대용량 데이터 삽입
1. 문제 정의 데이터 베이스 성능을 개선하는 것은 품질 좋은 서버를 유지하기 위해서 필수적입니다. 하지만 개발자들이 수작업으로 데이터를 삽입한 후 테스트 하는 것은 한계가 있습니다. 따라서 업브렐라 개발팀은 Data Bulk Insert를 통해 DB에 대용량의 데이터를 삽입하고 성능 개선을 해보도록 하겠습니다. 2. ... Read More
-
nginx 리버스 프록시 설정
안녕하세요, 업브렐라 팀의 백엔드 남권우입니다. 1. 리버스 프록시란? 업브렐라는 React로 클라이언트 사이드 렌더링을 하고 있으며, 최종적으로 아래와 같은 인프라 구조를 갖추었습니다. 기존에는, 클라이언트 사이드 렌더링을 하기 때문에, 클라이언트에서 API 요청을 보낼 때, API 서버로 클라이언트에... Read More
-
슬랙 봇으로 서비스 알림 받기
안녕하세요, 업브렐라 팀의 백엔드 남권우입니다. 이번 포스팅에서는 AWS 슬랙 배포 알림 파이프라인 구축하기에서 이어지는 내용으로, 슬랙 봇을 통해 서비스 알림을 받는 방법에 대해 알아보겠습니다. 1. 문제 정의 슬랙 봇을 도입하게 된 이야기에 앞서, 업브렐라 서비스에 대해서 설명해보겠습니다. 업브렐라는 공유... Read More
-
AWS 슬랙 배포 알림 파이프라인 구축하기
안녕하세요, 업브렐라 팀의 백엔드 남권우입니다. 이번 포스팅에서는 컨테이너 관리를 더 쉽게, AWS ECR, ECS로 서비스 구축하기에서 구축한 인프라에 슬랙 알림을 도입하여 알림 파이프라인을 구축한 이야기입니다. 1. 문제 정의 인프라와 CI/CD 파이프라인을 구축하였지만 여전히 불편한 점이 있었습니다. ... Read More
-
외부 API 의존성 문제 해결, WireMock
안녕하세요, 저는 업브렐라에서 백엔드 개발을 담당하고 있습니다. 업브렐라에서 부하테스트를 할 때, 외부 API 의존성을 어떻게 해결하였는지 적어보려 합니다. 1. 문제 정의 업브렐라 서비스는 로그인한 유저만 사용할 수 있기 때문에, 로그인 하는 과정은 필수적입니다. 하지만 kakao oauth 로그인을 통해... Read More
-
서버 부하 테스트, nGrinder
1. 문제 정의 업브렐라 서비스를 출시하기 전, 업브렐라 서비스의 안정성을 확인하기 위해 QA팀을 통해 부하 테스트를 했습니다. 하지만, 전문적인 QA팀이 없는 업브렐라 팀에서 새로운 버전이 나올때 마다 부하테스트를 직접 하기에는 어려움이 있기에, 업브렐라 개발팀은 부하테스트를 도입하기로 결정했습니다. 2. nGrin... Read More
-
롤링 업데이트, AWS ECR, ECS로 쉽게
안녕하세요, 업브렐라 팀의 백엔드 남권우입니다. 이번 포스팅에서는 컨테이너 관리를 더 쉽게, AWS ECR, ECS로 서비스 구축하기에서 구축한 인프라를 바탕으로 CI/CD 환경을 구축한 이야기를 소개하고자 합니다. 1. 문제 정의 초기에 개발용으로 CI/CD 환경을 구축해놓았었는데요, 간단하게 정... Read More
-
컨테이너 관리를 더 쉽게, AWS ECR, ECS로 서비스 구축하기
안녕하세요, 업브렐라 팀의 백엔드 남권우입니다. 이번 포스팅에서는 업브렐라의 아키텍처를 소개하고자 합니다. 가장 큰 고민은 어떻게하면 낮은 비용으로 고가용성의 아키텍처를 구축할 수 있을까였습니다. 또한 지속적인 서비스 운영을 고려했을 때 비용을 절감하는 것 또한 중요한 사안이었습니다. 1. 문제 정의 팀원들과 ... Read More
-
분산 서버 환경에서 세션 로그인
안녕하세요, 저는 업브렐라에서 백엔드 개발을 담당하고 있습니다. 이번 글에서는 분산 서버 환경에서 세션 로그인을 구현하는 방법에 대해 알아보겠습니다. 1. 문제 정의 업브렐라 서비스의 특성 상 비가 올 경우 사용자가 급증하기 때문에 분산 서버 환경을 구성하고 있습니다. 하지만 분산 서버 환경에서 세션... Read More
-
내 테스트 코드는 몇 점짜리? Jacoco를 통한 커버리지 관리
안녕하세요, 저는 업브렐라에서 백엔드 개발을 담당하고 있습니다. 업브렐라의 테스트 코드를 작성하면서 어떻게 하면 더 퀄리티 좋은 테스트 코드를 작성할 수 있을지에 대해 고민했습니다. 토스 팀의 이응준님의 코드 커버리지 100% 달성하기 영상을 보면서 많은 영감을 얻을 수 있었습니다. 다음은, 영상에 나오는 로버트 마틴... Read More
-
테스트 코드 작성 반복 노동으로부터 해방, Fixture Monkey
안녕하세요, 저는 업브렐라에서 백엔드 개발을 담당하고 있습니다. 업브렐라의 테스트 코드를 작성하면서 드러났던 문제점과 이를 Fixture Monkey라는 오픈소스 라이브러리로 어떻게 개선했는지 적어보려합니다. 기존 방식의 문제점 단순한 API에서는 괜찮았지만, 여러 테이블과 얽힌 복잡한 API의 경우 테스트 코드 작성에... Read More
-
기획자와 디자이너를 위한 마크다운 간단 문법
Markdown은 웹에서 콘텐츠를 작성하고 형식화하는 데 매우 유용한 도구입니다. 쉽고 간단한 문법을 가지고 있어 기획자나 디자이너가 작성하기에도 적합합니다. 이 글에서는 Markdown 문법의 기본적인 부분들에 대해 살펴보겠습니다. 1. 제목 제목을 작성하려면 앞에 ‘#’을 붙이면 됩니다. 제목의 수준은 ‘#’의... Read More