본문 바로가기

분류 전체보기11

지속적인 통합(Continuous-Integration) & 지속적인 배포(Continuous-Deploy) 적용하기 - 1편(CI란 무엇인가?) 개요 최근 프로젝트 완성이 얼마 남지 않아 배포에 관하여 검색하면서 CI/CD라는 단어를 만나게 되었습니다. 이전에 배포 경험이 아예 없었던 건 아니지만, CI/CD라는 개념을 통해 놀라울 정도로 편해진 배포 경험을 나누고자 포스팅을 하려고 합니다. 그럼 CI부터 CD까지 차례대로 알아보겠습니다. CI가 무엇일까요? CI란 지속적인 통합(Continuous Integration)을 의미합니다. CI를 알기 위해서 단어 하나하나 차례대로 알아봅시다. 먼저 통합(Integration)은 개발 과정에서 어떤 행위를 의미할까요? 요즘 대부분의 개발자는 소스코드가 담긴 레포지토리를 Git을 통해 버전 관리를 하며, 더 나아가 GitHub이나 GitLab과 같은 클라우드 원격 저장소에서 관리하고 있습니다. 이러한 .. 2020. 12. 3.
다중 서버 환경에서 Session은 어떻게 공유하고 관리할까? - 4편(Redis vs Memcached) 개요 지난 시간 세션 저장소로 In-Memory Database를 사용하기로 하였습니다. 하지만, In-Memory Database에는 다양한 데이터베이스들이 존재합니다. 각각의 데이터베이스는 저장하는 데이터의 형태 및 특성에 따라 분류됩니다. 과연 세션 객체를 저장하기 위해서 어떤 데이터베이스가 적합할까요? 지금부터 어떤 데이터베이스에 세션을 저장하는 것이 적합할 지에 대해 하나하나 알아보도록 하겠습니다! 세션 객체는 어떤 형태로 구성되어 있을까? 데이터베이스를 선정하기 전에 어떤 형태의 데이터가 저장되는지가 중요하다고 언급하였습니다. 그렇다면 우리가 저장해야 할 데이터인 세션 객체가 어떤 형태로 구성되어 있는지 알아야겠죠? 우선, 세션 객체에 대해서 간단히 알아봅시다. 세션 객체는 Key에 해당하는 .. 2020. 7. 8.
다중 서버 환경에서 Session은 어떻게 공유하고 관리할까? - 3편 (Disk based database vs In-Memory database) 개요 지난 시간 다중 서버 환경에서 별도의 세션 스토리지를 구성하여 정합성 이슈를 해결하기로 하였습니다. 여기서 생각해볼 문제가 있습니다. 웹 서비스의 특성상 대부분의 요청은 인가된 사용자가 보내는 요청인지 확인하는 절차가 선행되어야 합니다. 즉, 대부분의 요청에서 로그인한 사용자인지 아닌지 확인하기 위해 매번 세션 스토리지를 방문해야 합니다. 이러한 특성을 고려한다면 세션 스토리지를 선정할 때, 성능에 영향이 미치지 않도록 빠르게 데이터를 찾아서 제공할 수 있는 데이터베이스를 사용해야 하겠죠? 지금부터 어떠한 데이터베이스가 세션 스토리지에 적합한지 알아보겠습니다. 매번 왕복하기에 디스크는 너무 느린걸? 데이터베이스는 데이터가 어느 곳에 저장이 되는가를 기준으로 디스크 기반의 데이터베이스와 In-Memo.. 2020. 6. 27.
다중 서버 환경에서 Session은 어떻게 공유하고 관리할까? - 2편(Sticky Session, Session Clustering, Session Storage 분리) 개요 지난 시간에 서버의 성능을 업그레이드하는 두 가지 방법을 알아보았습니다. 그중 스케일 아웃을 하면 여러 대의 서버가 각각 세션 저장소를 독립적으로 갖게 되므로 정합성 이슈가 발생하였습니다. 이번 시간에는 스케일 아웃을 하였을 때 세션을 어떻게 공유하여 정합성 이슈를 해결하는지에 대해 알아보겠습니다. Multi Server 환경에서 Session이 어떻게 구성되는지 다시 한번 볼까요? 보시는 바와 같이 세션은 서버 1대에 하나의 저장소가 형성됩니다. 지난 시간에 알아보았듯이 나누어진 세션 저장소에 대한 별도의 처리가 없다면 각각의 세션들은 정합성 이슈를 발생시킵니다. 위 그림처럼 여러 대로 나뉜 서버가 하나의 서비스를 운영하기 위해서는 4개의 분리된 세션을 하나의 시스템처럼 동작하게 하거나, 고정된 .. 2020. 6. 17.