본문 바로가기

전체 글

(47)
REST clients(feat. http interface) https://youtu.be/Kb37Q5GCyZs?si=OPyiQb3Yz0MZdNnT 토비님 유튜브를 보고 한 번 따라해보았습니다. api 호출을 할 때 쉽게는 RestTemplate을 이용하는데요. 현재 업무를 진행하는 곳에서는 스프링 기반의 프레임워크가 아니라 다른 방식으로 api 호출을 하는데, 친구들 이야기를 들어보면 FeignClient, WebClient 등을 이용하는 것 같습니다. 토비님이 제시한 3가지 REST clients는 RestTemplate, WebClient, 그리고 spring 6부터 나오게 된 HTTP interface 입니다. RestTemplate과 WebClient는 실습 코드만 간단히 올리고, HTTP interface에 대해서 좀 더 자세히 살펴보겠습니다. 기본 환..
[NCP] Naver Cloud Platform 활용기 - (5) jmeter를 활용한 load test와 pinpoint 모니터링 Naver Cloud Platform 활용기 - (1) server 생성하기 Naver Cloud Platform 활용기 - (2) Cloud DB for MySQL 생성하기 Naver Cloud Platform 활용기 - (3) docker 기반 애플리케이션 배포 Naver Cloud Platform 활용기 - (4) pinpoint를 활용한 시스템 모니터링 Naver Cloud Platform 활용기 - (5) jmeter를 활용한 load test와 pinpoint 모니터링 이전 글에서 cloud server, cloud db를 설치하고 application을 구동시켰으며 pinpoint agent를 설정하였다. 이를 통해 db monitoring과 application monitoring이 가능해..
[NCP] Naver Cloud Platform 활용기 - (4) pinpoint를 활용한 시스템 모니터링 Naver Cloud Platform 활용기 - (1) server 생성하기 Naver Cloud Platform 활용기 - (2) Cloud DB for MySQL 생성하기 Naver Cloud Platform 활용기 - (3) docker 기반 애플리케이션 배포 Naver Cloud Platform 활용기 - (4) pinpoint를 활용한 시스템 모니터링 Naver Cloud Platform 활용기 - (5) jmeter를 활용한 load test와 pinpoint 모니터링 이전 글들에서 server를 생성하고, db도 cloud 기반으로 구성하였다. 이후 docker 기반으로 application을 server에서 실행시키고, 해당 server에 application을 배포하는 pipeline을 ..
[NCP] Naver Cloud Platform 활용기 - (3) docker 기반 애플리케이션 배포 Naver Cloud Platform 활용기 - (1) server 생성하기 Naver Cloud Platform 활용기 - (2) Cloud DB for MySQL 생성하기 Naver Cloud Platform 활용기 - (3) docker 기반 애플리케이션 배포 Naver Cloud Platform 활용기 - (4) pinpoint를 활용한 시스템 모니터링 Naver Cloud Platform 활용기 - (5) jmeter를 활용한 load test와 pinpoint 모니터링 이전 글에서 NCP 기반 linux server와 db server를 생성하였다. 이제 ubuntu 서버에서 미리 만들어 둔 docker image를 가져와 실행시켜보고자 한다. 지금부터는 어느 클라우드를 쓰든 동일한 방법으로 ..
[NCP] Naver Cloud Platform 활용기 - (2) Cloud DB for MySQL 생성하기 Naver Cloud Platform 활용기 - (1) server 생성하기 Naver Cloud Platform 활용기 - (2) Cloud DB for MySQL 생성하기 Naver Cloud Platform 활용기 - (3) docker 기반 애플리케이션 배포 Naver Cloud Platform 활용기 - (4) pinpoint를 활용한 시스템 모니터링 Naver Cloud Platform 활용기 - (5) jmeter를 활용한 load test와 pinpoint 모니터링 Cloud DB for MySQL 토이 프로젝트용으로 활용하기 위해서 클라우드 server에 mysql 서버를 직접 설치하여 구성해도 상관은 없다. 하지만 application server와 db server의 자원을 분리하여 ..
[NCP] Naver Cloud Platform 활용기 - (1) server 생성하기 Naver Cloud Platform 활용기 - (1) server 생성하기 Naver Cloud Platform 활용기 - (2) Cloud DB for MySQL 생성하기 Naver Cloud Platform 활용기 - (3) docker 기반 애플리케이션 배포 Naver Cloud Platform 활용기 - (4) pinpoint를 활용한 시스템 모니터링 Naver Cloud Platform 활용기 - (5) jmeter를 활용한 load test와 pinpoint 모니터링 Server Server는 물리적인 서버 자원을 구매하지 않고 클라우드 환경에서 서버를 생성하고 사용할 수 있게 해주는 네이버 클라우드 플랫폼의 서비스입니다. 서버의 빠른 생성을 지원하고, 사용한 만큼만 비용을 지불하면 되기 때..
[DB] 샤딩(Sharding)이란? 샤딩 샤딩은 분산 시스템에서 데이터를 수평적으로 분할하는 기술이다. 수평적 파티셔닝(horizontal partitioning)의 일종으로 볼 수도 있지만, 분산 시스템에서 서로 다른 시스템 자원을 이용하여 데이터베이스의 부하를 분산시키고 성능을 최적화하는 데 초점이 있다. 아래 그림처럼 단일 서버에서 데이터를 read & write 하는 것이 아니라, 여러 대의 서버로 나누어 저장하고 조회도 각각의 데이터베이스에서 처리함으로써 부하를 분산시킬 수 있다. 언제 필요할까? 파티셔닝과 비교해보자. 10개의 파티션을 만들어 주로 적은 수의 파티션에서 read & write 작업이 일어난다면 파티셔닝이 성능 향상에 도움이 될 수도 있다. 하지만 10개의 각 파티션을 균일하게 사용하게 된다면 오히려 오버헤드가 ..
[DB] 데이터베이스와 색인(hash, LSM tree) 데이터베이스와 색인 데이터베이스의 기본은 특정 데이터를 write & read 하는 데 있다. 값을 특정 저장소에 넣어두고 필요할 때 꺼내쓰는 것이다. 일반적으로 하나의 파일 끝에 write만 하는 작업은 매우 효율적이기 때문에 많은 데이터베이스가 내부적으로 추가 전용(append-only) 데이터 파일인 로그(log)를 사용한다. 하지만 원하는 데이터 값을 읽어오려면 전체 파일을 스캔해서 찾아와 읽어야 한다. 검색 비용이 O(n)이다. read를 효율적으로 수행하기 위해서 색인(index)라는 데이터 구조가 필요하다. 하지만 별도의 index를 관리해야 하기 때문에 특히 write 할 때 오버헤드가 발생한다. 이러한 작업은 단순히 파일 끝에 write 하는 것보다 쓰기 속도를 느리게 한다. 데이터를 ..