전체 글 77

Spring Cloud

- 분산 시스템에서 공통적인 패턴(구성 관리, 서비스 검색, 지능형 라우터 등)을 모아 신속하게 구출할 수 있는 도구를 Spring Library로 제공한다. 따라서, 개발자는 분산 시스템에서 필요한 부분들에 대한 부담을 덜고 충실하게 서비스의 기능을 구현하는 것에 충실할 수 있다. - 특정 벤더(AWS, Cloud Foundry 등)에 종속적이지 않다. - 보통, Spring config, Rabbit MQ, Eureka, Zuul을 활용하여 이상적인 마이크로 서비스를 만든다.

Partitioning

Hot Spot이 생기지 않게 하면서 데이터와 질의 부하를 여러 장비에 균일하게 배분하는 것 하나의 DBMS가 많은 테이블을 관리하다보니 느려지는 이슈 발생 서비스의 크기가 점점 커지면서 다양하고 많은 테이블 존재 => 큰 테이블이나 인데스를 관리하기 쉬운 단위로 분리 장점: 특정 DML이나 Query 성능 향상 단점: join에 대한 비용 증가, 테이블과 인덱스도 같이 partitioning해야함

DB 2021.04.13

Scale up, Scale In, Auto Sacle

Scale up(Vertical Scaling) 서버 자체의 spec을 높여 성능을 향상시키는 방법 서버 자체의 갱신이 빈번하여 정합성 유지가 어려운 경우 효과적 Scale out(Horizontal Scaling) 서버의 대수를 늘려 동시 처리 능력 향상 API 서버나 읽기전용 DB, 정합성 관리가 어렵지 않은 DB Engine에 사용된다. 저렴한 서버 여러 대를 사용하므로 가격에 비해 뛰어난 확장성으로 효율이 좋지만 대수가 늘어날수록 관리가 힘들어지는 부분이 있다. Auto scale 유저가 몰릴 경우나 빠져나갈 때에 대한 기준을 만들어놓고 그에 따른 sacle in, out을 자동적으로 이루어지도록 하는 것

Sharding

=horizon partitioning .같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법 .쓰는 이유는 partitioning과 마찬가지로 데이터가 급격하게 증가하거나 트래픽이 특정 db로 몰리는 상황을 대비하기 위한 db증설이다. .Application level에서도 가능하나 database level에서도 가능하다. .샤딩을 적용하면 프로그래밍, 운영적인 복잡도가 증가한다. .따라서, 샤딩을 피하거나 지연시킬 수 있는 방법을 찾아야하는데 대표적으로, 1. Scale-up을 한다. 2. Read 부하가 크면 cache나 database의 replication을 적용한다. 3. Table의 일부 컬럼만 자주 사용한다면 vertical partitioning을 적용한다.

DB 2021.04.13

[프로그래머스] 멀쩡한 사각형

programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 꽤 간단한 문제인데도 핵심을 잘 파악하지 못했다. 규칙을 찾는 문제라고 생각하고 규칙을 찾으려했는데 잘 찾아지지 않았다. 가로로 가능한 사각형만 셀 때 10, 9, 7, .. 이런식으로 되니까 뭔가 있지않을까라고 생각만했지 기울기..를 잘 생각하지 못했다. 수학이라고 생각하고 좌표로 바꿔 생각하면 정말 쉽게 풀 수 있는 문제. 그리고 형 변환에 대해..

[프로그래머스] 문자열 압축

programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 문제는 이해한대로 순서대로 풀었다. 문자를 1개, 2개, ... , 문자열의 갯수만큼 자를 수 있으니까 그만큼의 for문을 돌렸고 그만큼 자르는 함수를 만들어서 갯수가 가장 작은 답을 return하게끔 했다. 크게 세 부분으로 나눌 수 있을 것 같다. 기본적으로 전에 자른 str과 현재의 str을 비교해서 다르면 전에 있는 str을 StringBulder에 넣고 만약 ..

Algorithm/구현 2021.04.02

[프로그래머스] 스킬트리

programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 쉬운듯 하면서 잘 풀리지 않았던 문제. 처음 접근은 for문으로 index를 접근하려했지만 for문도 여러개이고 좋은 방법이 아닌 것 같고 다른 아이디어가 따오르지 않아 다른 블로그를 참조했다. 여러 해결방법이 있어보이지만 그나마 간단한 해결방법을 참조하였다. 1) public int solution(String skill, String[] skill_trees) { int answer = 0; for(int i=0; i

Algorithm/구현 2021.04.01