전체 글

현재 진행하는 개발 과정을 자주 기록하는 곳
개발/설계

Key-Value-Store 만들면서 겪은 이슈

Key-Value-Store를 구현하는 과정에서 docker-compose를 사용했는데 기대하던 실험 결과가 나오지 않았습니다. 그래서 제가 만난 이슈와 해결방법에 대해 공유하려합니다. 간단한 Key Value Store 프로젝트 소개 GitHub - hojihun5516/key-value-store Contribute to hojihun5516/key-value-store development by creating an account on GitHub. github.com 1) User는 Proxy 서버로 데이터 저장을 요청합니다. 2) Proxy 서버는 해시링을 통해 적절한 Store 서버에 저장을 합니다. 3) Store 서버는 1초에 1번씩 redis에 헬스 카운트를 올리고, Service Dis..

개발

RabbitMQ 자세히 알아보자

1. RabbitMQ 란? 서버간 메세지를 전달해주는 오픈소스 메세지 브로커입니다. RabbitMQ는 AMQP프로토콜을 구현한 메세지 브로커입니다. AMQP란? AMQP란 Advanced Message Queuing Protocol로 client application과 middleware broker와의 메세지를 주고 받기 위한 프로토콜이다. 2. 구조 1) Producer 메시지를 보낼 때 RabbitMQ에 직접 연결하고 메시지를 publish(발행)합니다. 2) Exchanges Exchange는 받은 메시지를 하나 이상의 Queue에 라우팅(전달)합니다. 라우팅 방식은 Exchange의 타입에 따라 다릅니다. - Direct Exchange: Routing Key가 특정 Queue의 Binding ..

개발/Git

git 폴더별 유저 설정

https://modernflow.tistory.com/158 한 디바이스에 git 계정 여러개 등록 회사에서 깃을 사용하던 중 제 개인 계정도 등록하고 싶어서 공부하게 됐습니다. 1. ssh key 생성 - 경로 이동 cd ~/.ssh - 키 생성 - 여기서 제 깃 이메일과 -f라는 옵션으로 구체적인 파일명을 적어주 modernflow.tistory.com 위의 과정을 따라하고 오시길 바랍니다 # ~/.gitconfig-personal [user] email=hojihun5516@daum.net name=hojihun5516 #~/.gitconfig [user] name = jihoonheo email = company@company.com [includeIf "gitdir:~/next-step/"] ..

개발/Database

Database Index는 언제 써야하는가?

1. 배경 개발자 친구들과 이야기를 하던중 sql tuning작업을 통해 조회 쿼리 속도를 높였다는 이야기를 들었습니다. 막연하게 떠오르는 생각은 "아! 당연히 Indexing을 했겠구나" 였지만 그때 문득든 생각이 있습니다. Indexing은 쿼리 조회 속도를 높이고 Index를 갱신를 갱신하기 때문에 CUD에 대해서는 느리다 그렇다면 로그를 남기는 것과 유사한 기능을 제외하고, 많은 비즈니스 기능은 빠른 조회를 필요로하는데 이런 테이블에 전부 인덱싱을 해야하는게 좋을까? 제가 찾은 결론부터 말하면 "아니다" 입니다. DB에서 데이터를 스캔하는 방식은 풀스캔(Full Scan)과 인덱스 스캔(Index Scan)이 있습니다. 위의 친구같은 경우는 풀스캔으로 되어있던 방식을 인덱스 스캔으로 변경하여 조회..

개발/설계

Restful API 설계

이 글을 쓰는 이유 고민 - 저는 현재 회사에서 msa구조를 갖고 서비스를 개발중입니다. - 새로운 기능을 개발하는 도중 자원을 표현하는 계층을 어떻게 표현해줘야 할까?라는 고민을 했습니다. - 본문 하단에 고민에 대한 테스크와 결과를 적어두었습니다. 1. Restful api가 나온 이유 - 로이 필딩은 HTTP의 주요 저자 중 한 사람으로 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST(Representational State Transfer)를 발표했습니다. - Rest를 직역하면 자원(리소스)의 표현에 의한 상태 (정보) 전달이라고 해석할 수 있습니다. - 조금 풀어서 해석하면 웹에 존재하는 모든 ..

개발/Git

한 디바이스에 git 계정 여러개 등록

회사에서 깃을 사용하던 중 제 개인 계정도 등록하고 싶어서 공부하게 됐습니다. 1. ssh key 생성 - 경로 이동 cd ~/.ssh - 키 생성 - 여기서 제 깃 이메일과 -f라는 옵션으로 구체적인 파일명을 적어주었습니다 ssh-keygen -t rsa -C hojihun5516@daum.net -f hojihun5516 (개인계정) ssh-keygen -t rsa -C company@company.com -f company (회사계정 임시로 company라고 사용) 2. public key 복사 cat hojihun5516.pub - 위의 명령어로 나온 내용을 복사하여 github->settings->ssh keys에 등록해줍니다 3. ssh config 생성 cd ~/.ssh vim config ..

개발/AWS

AWS Codepipeline-Elasticbeanstalk-free tier 자동 배포(3)

Codepipeline 생성 2. 소스 스테이지 - Github v2를 사용합니다. - 연결에 원하는 Repository 혹은 계정을 등록해줍니다. - Observer가 해당 repository의 branch를 보고있다가 변경이되면 해당 파이프라인이 실행됩니다. 3. 빌드 스테이지추가 - 저는 환경변수를 사용해야했기 때문에 제가 작성한 prod.env 파일의 내용들을 빌드 프로젝트에 추가했습니다. - 완료한 이후 빌드스테이지탭에서 다음을 눌러주세요 4. 배포스테이지 추가 5. 배포기다리기 6. ElasticBeanstalk에 환경변수 넣어주기 - 환경속성 입력해주고 저장한다음 반영하는데에는 생각보다 오래걸려요 다시 접속해보면 배포가 완료되어있습니다. 해당 튜토리얼을 해보시고 생략해도 되는부분이 있다면 알..

개발/AWS

AWS Codepipeline-Elasticbeanstalk-free tier 자동 배포(2)

Elastic Beanstalk 생성 애플리케이션이름, 환경이름만 넣고 아래와 같이 세팅했습니다. ** 추가옵션 구성 ** 1) 환경생성 2) 네트워크 수정 - 아래 데이터베이스 서브넷도 체크해주세요 - t2 micro는 가용영역이 2a와 2c만 허용한다고 하네요 접속

모플로
모던플로우