본문 바로가기
반응형

분류 전체보기714

In-memory Redis vs Memcached 비교하기 개요 최근 캐시로 Redis를 많이 사용합니다. 많은 자료들과 우수한 성능, Spring에서 풍부한 기능 제공 등 다양한 이유가 있습니다. 이번 시간에는 Redis 이외에도 캐시로 유명한 Memcached를 알아보고 비교해보도록 하겠습니다. Memcached와 Redis 공통점 1. in-memory cache이다. 2. key-value 저장소이다. (redis는 데이터 구조저장소 성격에 가까움) 3. 데이터관리를 위해 NoSQL을 사용한다 4. RAM에 데이터를 보관한다 In-memory database 란? In-memory 데이터베이스는 데이터 저장을 메모리에 의존하는 특수 제작된 데이터베이스입니다. 디스크, SSD에 저장하는 데이터베이스와는 다릅니다. In-memory 데이터 저장소는 디스크에 .. 2022. 6. 21.
cache란? Redis를 cache로 조회 성능 개선하기 cache란? 캐시란, 나중에 요청될 결과를 미리 저장해두었다가 빠르게 서비스를 해주는 것을 의미합니다. 예를 들어 Factorial의 Dynamic programming이 있습니다. 미리 계산을 해두면 나중에 계산을 또 하지 않아도 됩니다. 4! = 4 * 3!입니다. 3!은  3! = 3 * 2!입니다. 이렇게 3!을 미리 저장해두고 4!에 이용하면 빠르게 계산 할 수 있습니다.  캐싱 전략(Caching Strategy) 캐싱전략은 크게 Look aside Cache와 Write Back 2가지 방식이 있습니다. 또한 Write에는 Cache 데이터 저장 여부에 따라 Write-Around, Write-Through 2가지가 있습니다. 1. Look aside Cache(Lazy Loading) 이.. 2022. 6. 20.
Redis를 로그인 Session Storage로 이용하기 외부 Session Storage 사용 이유 다수의 서버에서 세션을 관리하는 방법은 여러가지가 있는데, 최종적으로 외부 Session Storage를 사용하도록 결정했습니다. 외부에서 로그인 정보를 따로 관리한다면, 다음과 같은 장점이 있습니다. 톰캣 서버에 문제가 있더라도 영향을 받지 않을 수 있다. 배포하는 과정에서 생기는 세션 관리에도 전혀 영향을 받지 않는다 여러 서버 세션 정보의 정합성을 유지할 수 있다 세션을 다루는 부분을 Redis에서 관리하도록 개선할 예정입니다. Redis는 In-memory 저장소로, key-value 방식을 이용해 고속 쓰기 및 읽기 처리가 가능합니다. 세션 자체가 복잡한 연산과 계산을 필요로 하지 않으므로 적절합니다. Redis 코드에 추가하기 gradle에 의존성 .. 2022. 6. 17.
분산 서버에서 Session 관리하기 분산서버에서 로그인 관련 Session을 어떻게 관리할지 생각해봅니다. 일단 Load Balancer를 통해, 여러명의 사용자가 여러대의 서버에 요청을 보낸다고 가정합니다. 가장 기초의 Load Balancer Load Balancer를 사용한 일반적인 서버 관리의 경우 다음처럼 round-robin(기본설정) 알고리즘으로 서버에 요청이 갑니다. User1과 User2의 요청이 Load Balancer를 거치면, Server1, Server2에 다양하게 라우팅 됩니다. 하지만, 이렇게 다양한 SERVER로 로드 밸런싱이 된다면 다음과 같은 문제에 직면합니다. 1. User1이 Server1에 요청을 보내어 로그인을 합니다. 2. User1이 Server1에서 웹 사이트를 이용합니다. 3. 잠시 후 ser.. 2022. 6. 17.
네이버 EP 작업기록 네이버 쇼핑에 현재 현대 큐밍 홈페이지에 노출되는 상품들을 똑같이 등록하기 위해서 네이버 EP를 구성해야 한다. 네이버 EP 양식에 따라 노출 상품 정보들을 텍스트 파일로 만들어 파일에 접근 가능한 URL 주소를 등록하면 된다. 네이버 EP의 종류는 2개인데, 매일 새벽 1시에 업데이트하는 전체 EP, 약 2시간 간격으로 신규, 업데이트, 품절, 품절 복구 상품을 구분하는 요약 EP가 있다. 네이버 EP 텍스트 주요 규칙 컬럼과 컬럼 사이는 반드시 tab으로 구분(TSV형식) 첫번째 행은 헤더 선언 두번째 행부터 상품정보 입력 필수 컬럼은 공백문자(null)이거나, 값이 없는 상태인 경우 해당 라인은 에러처리 되므로 유의 모든 칼럼값에서 탭/엔터문자 등의 제어문자 및 그외의 공백줌ㄴ자, 프로그래밍 언어 .. 2022. 6. 12.
Spring에서 예외 처리하기 안녕하세요, oooo 백성규선임입니다. 스프링을 사용하면서 예외처리는 무엇이고 어떻게하는 것인지 공부하면서 조금 더 효율적으로 관리하는 방법에 대해 공유하고자 합니다. 이번 시간에 자바 예외처리의 구조와 주의사항을 확인하겠습니다. 목차 1. 자바 예외 클래스 구조 소개 2. 예외처리 방법 3. UnChecked Exception vs Checked Exception 4. Checked Exception 특징 1. 자바 예외 클래스의 구조 자바 예외 클래스의 최상의 클래스는 Object이고 Throwable이 상속받고 있습니다. 또한 모든 예외 클래스는 Throwable 클래스를 상속받는데, 여기서 크게 Error와 Exception으로 분리됩니다. Error는 OutOfMemoryError(메모리 문제).. 2022. 6. 11.
OCP(Open Closed Principle) 원칙 * 해당 글은 회사 스택 게시판에 올린 글로, 사내망이기 때문에 링크 대신 전문을 복사해서 기록합니다. 안녕하세요 OOOO OO팀 백성규선임입니다. 저는 현대큐밍 홈페이지 웹을 담당하면서 기존의 코드를 유지보수, 개발하는 업무를 하고 있습니다. 최근에 좋은 유지보수성을 가지기 위해서 다양한 방법들을 공부하고 있는데 그중에 한가지를 공유합니다. 오늘 소개드릴 내용은 OCP(Open Closed Principle) 개방 폐쇄 원칙입니다. OCP는 SOLID 원칙 중 하나로, SOLID 원칙은 자기 자신의 클래스의 응집도는 높이고 클래스 간의 결합도는 낮추기 위한 객체지향 설계 기법입니다. 궁극적으로 유지보수와 재사용성을 높이기 위함입니다. OCP는 다형성에 힘입어 재사용, 관리 가능한 코드를 만드는 기반이 .. 2022. 6. 11.
현업들과 협력/의사소통하기 *다양한 부서와 작업했던 내용들 VOC팀 - 피해보상 현황, 등록, 처리 개발, 블랙리스트 화면 개선 영업개발팀 - 제품 상담신청 시, 특정 제휴사 추천인 기능 개발 법인영업팀 - 법인영업 전용 일괄등록 기능 개발(반환, 소유권이전, 설치처 등등) 상품개발팀 - 상품 등록 시, 신규 추가되는 제품생성 항목들 전산화 e커머스팀 - 각종 홈페이지 신규 게시판 및 UI 개선, 기능 개발 품질관리팀 - A/S 현황(교환, 반품, 수리) 대쉬보드 개발 구매관리팀 - 자재, 공구, 필터를 엔지니어가 직접 A/S품목 등록가능하도록 기능 개발 물류관리팀 - 출고된 상품 바코드 삭제 및 출고 백업 기능 개발 혁신전략팀 - 할인쿠폰 등록가능 조직 선택 기능 개발 마케팅팀 - 홈페이지 할인정책 카드 정보 변경 전산화, 나이.. 2022. 6. 10.
실용주의 프로그래머 실천사항 *실천사항 Topic38 우연에 맡기는 프로그래밍 p228 의도적으로 프로그래밍하기 지금 내가 무엇을 하는가? 계획을 세우고 그것을 바탕으로 진행하라 가정을 기록으로 남겨라 왜 동작하는지 모르면 실패하는지도 모른다. *문제 정의 현재 어떤 상품이든 1개밖에 구매하지 못한다. 문제는, 고객이 가끔 여러 상품을 구매하기 위해서 결제 절차를 처음부터 끝까지 여러번 반복하는 경우가 있었다. 따라서 다중구매 시스템을 만들어보기로 했다. 결제는 중요한 부분인만큼 동작과정을 면밀히 살펴보는 것이 중요하다. 따라서 직접 그림을 그려보면서 해보기로 했다. 현재 시스템에서 메인 DB는 대내 시스템에 있으며, 홈페이지 DB들은 대내 시스템을 바라보고 있다. 결제 시, 모든 정보들이 실제 정산을 위해서 대내 시스템 DB에 저.. 2022. 6. 2.
반응형