Build (9) 썸네일형 리스트형 캐싱을 도입했다가 철회한 경우들. 프로젝트를 진행하면서 캐싱을 도입했다가 캐싱을 효과적으로 사용하지 못한다고 느껴서 철회한 경우가 있어서 정리를 하며 캐싱을 도입하는 이유에 대해 고찰을 해보자고 합니다. A. 첫번째 경우: Redis -> DB 1. 캐시 사용의 이유 프로젝트에서 필요한 가게 관련 데이터를 Kakao API의 DB에 의존하는 특성상 데이터를 관리할 수 없습니다.그래서 관련 데이터를 DB에 저장하여 관리하기보다는, 가게 검색시 카카오 API 요청으로 받는 가게 정보를 일시적으로 캐싱해 재검색시 API 요청을 줄여 성능 향상및 API 요청에 대한 비용을 줄이려고 했습니다.2. 프로젝트 변경그렇지만, 이후 가게 사장님이 직접 가게 정보를 추가할 수도 있게 서비스가 변경되면서 프로젝트의 DB에 저장된 정보와 캐싱.. 로드 밸런싱, 하다보면 결국 MSA하고 싶어지지 않을까? 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를 만든다면 그 라우팅, 인증, 로그등 다양한 기능들을 하도록 할 수도 있겠지만 다양한 서비스가 제.. Vim 사용기 (ColorScheme & Terraform) 0. 개요테라폼을 사용하기위해 vim에 .tf파일을 제작려고 하는데 가독성이 떨어져 color scheme을 적용하고 vim을 배워본다. vi, vim은 유닉스 기본 편집기라 맥OS에서는 설치가 되어 있지만 윈도우의 경우 따로 설치해 주어야 한다.vim 명령어: https://stricky.tistory.com/135 1. Vundle 설치:PluginInstall을 하기위한 플러그인 매니저 입니다.git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 2. ./vimrc 파일 만들기-1. Home 디렉토리에 .vimrc 파일을 만들어 준다.vim ~/.vimrc -2. .vimrc에 플러그인 설치와 설정 코드를 작성.. 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 때문에 첫번째 테스트 결과는 신뢰하기.. Gradle 도메인 객체 1. Project 객체 ◍ Project객체: 프로젝트의 환경구성, 의존관계 , 태스크 등의 내용을 제어 및 참조 ◍ build.gradle과 대응 ◍ Project 객체의 생명주기 ○ 빌드 수행을 위한 Settings객체 생성 ○ settings.gradle 스크립트 파일이 있을 경우 Settings 객체 비교 ○ 구성된 Settings 객체를 이용하여 Project객체의 계층 구조 생성 ○ 멀티 프로젝트일 경우 부모 프로젝트로 부터 Project 객체 생성 후 자식 프로젝트의 Project생성 ◍ Project 객체 구조 ○ TaskContainer ◼ taskcontainer.print 매서드 이용해서 클래스 컴파일, war파일 압축, 단위 테스트 등 실행 ◼ getbyname등 이용해 프로젝트 .. Gradle 태스크 1. 기본 예제 예제1> task hello Gradle 기본 그레이들 스크리트 파일과 기본 객체 초기화 스크립트 -> Gradle객체 처음 시작 되는 스크립트 (init.gradle) 사용자 정보, 초기 설정 값, 실행 환경 등 설정 스크립트 -> Settings객체 파일 구조(싱글, 멀티등) 빌드에 대한 설정 정보(settings.gradle) 빌드 스크립트 -> Project 객체 그레이들 기본 객체들을 이용해 초기화와 설정 스크립트의 내용 이용 가능 그레이들 구성요소들 그레이들 속성파일: (gradle.properties, Project폴더 하위에 있음)/ 빌드 환경 속성등 내용 환경변수: 시스템에 등록한 Gradle설치 정보 명령어 옵션: 빌드 수행시 명령어와 옵션 정보를 인수로 전달. (gradle -Pname=gradle hello) buildSrc.. 이전 1 다음