Build/MSA (5) 썸네일형 리스트형 캐싱을 도입했다가 철회한 경우들. (첫번째 경우) 프로젝트를 진행하면서 캐싱을 도입했다가 캐싱을 효과적으로 사용하지 못한다고 느껴서 철회한 경우가 있어서 정리를 하며 캐싱을 도입하는 이유에 대해 고찰을 해보자고 합니다. A. 첫번째 경우: Redis -> DB 1. 캐시 사용의 이유 프로젝트에서 필요한 가게 관련 데이터를 Kakao API의 DB에 의존하는 특성상 데이터를 관리할 수 없습니다.그래서 관련 데이터를 DB에 저장하여 관리하기보다는, 가게 검색시 카카오 API 요청으로 받는 가게 정보를 일시적으로 캐싱해 재검색시 API 요청을 줄여 성능 향상및 API 요청에 대한 비용을 줄이려고 했습니다.2. 프로젝트 변경그렇지만, 이후 가게 사장님이 직접 가게 정보를 추가할 수도 있게 서비스가 변경되면서 프로젝트의 DB에 저장된 정보와 캐싱.. 서버에 트래픽이 많아지면 더 좋은 CPU와 램을 쓰면 되는거 아닐까? (Scale Up vs. Scale Out, Load Balancing) 1. 소개AWS로 트래픽이 늘어나는 상황을 가정해 배포를 하다 보니 자연스럽게 로드밸런싱을 사용했었습니다. 예제들을 따라하다 보면 방법론에 치우칠 때가 있는데 왜 하게 되는지 잘 모르는 것 같아서 로드밸런싱이 어떤 건지 설정하는 법 이상의 "왜"에 대해 고민을 해보고 싶었습니다. 로드밸런싱에 대해 고민하다보니까 MSA를 사용하는 많은 이유들이 있겠지만 "이런 이유에서 나중에는 MSA까지 쓰고 싶어지지 않았을까?" 라는 생각이 드는 부분도 생기는 군요. 확실히 요즘은 글로 표현을 하는게 개인적으로 공부도 더 하게 되고 좀 더 깊게 파보게 되는 것 같습니다. 하나씩 풀어가 보겠습니다. *본 포스트는 사용법에 대해서 다루지 않으려고 합니다. 혹시 필요하신 분들을 위해 사용법은 도움 받은 링크들로 대체하였.. 자바, 스프링 내부망 통신 1편: 서버간 통신에 쓰일 라이브러리 1. 소개기본적인 멀티스레드/블록킹 환경에서의 Http 요청에 대해 다루어 보려고 합니다. MSA구조를 배워가면서 스프링 환경에서의 서블릿을 이용한 통신 이외에 자연스럽게 서버간 내부 통신에 대한 니즈가 생겼고 다양한 Http Connection 방법들이 있어서 각자의 특징과 쓰임을 분석해보려고 작성하였습니다. 기술들이 생겨나며 보여지는 특징은 각 기술들의 추상화 수준입니다. 특히 저수준에서 고수준으로 올라가면서 기술의 영역에서 비즈니스 영역으로 차츰 추상화 하는 방식으로 진화해왔습니다. 2. 기술의 진화A. URL Connection: 자바 1.0 초기부터 있었던 가장 기본적인 레벨의 URL Connection입니다. Http로 특정 되지 않았기에 URL의 주소를 FTP등으로 바꾸어 다른 프로토.. 최소한의 AWS 보안: Bastion Host 1. 도입 계기처음 Bastion Host를 알게 된건 패스트 캠퍼스의 강의에서 였다. 그때 강사님께서 사용하시는 걸 보고 조금 공부를 한 후 이것이 보안 조치였다는 걸 알게 되었다. 마침 처음 도메인 주소가 있는 프로젝트를 만들어 보려고 한 나는 보안에 관해 전무 하다는 사실이 막연히 조금 두려웠었다. 이에 최소한의 보안 설정을 해보자고 선택했던 Bastion Host. 이게 최선의 보안설정은 아니더라도 이때나 지금이나 Bastion Host를 사용한다면 가장 큰 이유는 SSH 접속시 어플리케이션 서버의 IP를 외부에 노출하지 않아도 된다는 점이 큰 것같다. On-Premise에서 Bastion Host를 만든다면 그 라우팅, 인증, 로그등 다양한 기능들을 하도록 할 수도 있겠지만 다양한 서비스가 제.. Protocol Buffer 1. 프로토콜 버퍼란? 구글에서 개발한 데이터 직렬화 구조. 데이터를 주고 받을 때 JSON보다 더 효율적으로 정의하고 압축한다. 언어와 플랫폼에 중림적이다. 포맷을 정하기만 하면 컴파일시 C++, Java, Python등에서 이용 가능. 2. TypeJava TypeProto Typeintint32/sint32longint64/sint64floatfloatdoubledoublebooleanboolStringstringbyte[]bytes*sint means signed int (음수, 양수 모두 허용) 3. JSON 과 속도차이- JSON을 ObjectMapper로 직렬화/역직렬화 하는것과 굉장한 차이가 난다. (거의 8배)*자바는 cold start problem 때문에 첫번째 테스트 결과는 신뢰하기.. 이전 1 다음