분류 전체보기

· Spring
들어가기현재 개발중인 모각코 플랫폼은 같은 모각코에 속한 참여자들 끼리 모각코 온도(좋아요,싫어요)를 높이고 낮춰야하는 요구사항이 있습니다. 참여자들이 동시다발적으로 온도를 높이고 낮추려한다면 동시성 문제를 피할 수 없습니다. 문제 상황 파악하기먼저 동시성의 정도를 파악해야합니다. 동시성의 정도를 파악하는게 불가능한 경우도 있고 가능하더라도 정확하게 예측하기란 어렵습니다. 실제 기업들은 모니터링과 통계정보를 통해서 어느 정도 분석을 하는 것 같습니다. 모각코 온도를 높이고 낮추는 오퍼레이션은 같은 그룹에 속한 참여자들 끼리만 가능하도록 설계돼있습니다. 한 그룹은 최대 15명까지 수용이 가능하도록 돼 있어 동시성이 높은 상황은 아니라고 판단이 됩니다. 이러한 상황에 적합한 해결책을 찾아보려 합니다. 비관적..
· Spring
선택 정렬 (Selection Sort) : O(N^2)선택정렬은 선택이라는 이름에서 그 의미가 잘 들어납니다. 오름 차순으로 정렬한다고 가정해보면, 배열 전체를 탐색해 가장 큰 수를 찾아 가장 오른쪽 요소와 Swap합니다. 요소가 10개인 [5,2,3,13,24,1,6,23,52,12] 이러한 배열이 있을 때 0번째 요소부터 순차적으로 가장 큰 값(52)이 위치한 인덱스(8)를 찾은 뒤 12와 52를 Swap합니다. [5,2,3,13,24,1,6,23,12,52] 이제 맨 마지막 요소는 이미 정렬됐으니 다음으로 큰 수(24)를 찾아 12와 Swap하면 됩니다.([5,2,3,13,12,1,6,23,24,52]) public class SelectionSort { public static void m..
· Spring
들어가기Spring과 React 기반으로 프로젝트를 진행하며 소셜로그인 기능을 도입했는데 굉장한 삽질의 연속이었습니다. 다시는 삽질하지 않도록 그 과정을 남겨 놓고자 합니다. OAuth2의 전 과정을 Spring에서 처리하기 [Spring Security OAuth2 Client]가장 먼저 시도했던 방법으로 Spring Security의 OAuth2 클라이언트를 사용해 정말 간편하게 소셜로그인을 구현할 수 있었습니다. 프론트는 /oauth/authorize/kakao 로 요청을 보내면 Spring의 OAuth2 Client가 그 이후의 모든 과정을 대신 처리해줍니다. 모든 과정을 대신 처리해준다는 의미는 카카오 로그인 페이지로 리다이렉션, Authorization Code 요청, AccessToken 요..
· Spring
Google S2구글이 개발한 Google S2는 그리드 시스템의 일종입니다. 그리드 시스템이란 아래 사진 처럼 지구를 작은 사각형들로 쪼개 지구 표면을 덮는 시스템을 의미합니다. Goolge은 프렉탈 구조(같은 구조의 반복)인 힐버트 곡선을 이용해서 지구 상의 표면을 끊어지지 않는 선을 이용해 덮습니다.  직접 Google S2 라이브러리 시각화 도구로 그리드 시스템을 확인해보겠습니다.  위 빨간색 사각형을 Google S2에선 Cell이라 부르고 같은 셀안에 포함된 지점(위경도)들은 모두 동일한 Cell ID를 부여받게 됩니다. 이 셀들은 고유한 Level이 존재하는데 Level이 작을 수록 더 넓은 면적을 갖고 Level이 클 수록 더 작은 면적을 같게 됩니다.  Cell Level은 우리가 찾고자..
· Spring
들어가기 현재 개발 중인 아모르각코 [아모르겠고 모각코나 하자] 프로젝트는 위치를 기반으로 사용자들이 모각코 모임을 등록하고 참여할 수 있는 서비스입니다.프로젝트를 구현하며 가장 큰 고민은 위치를 어떻게 저장하고 어떻게 조회할 것인지였습니다. MySQL의 R-Tree 인덱스를 활용하는 방법과 PostgreSQL의 GiST인덱스를 활용하는 방법을 조사해 봤습니다. 이전 포스팅에서 MySQL과 PostGIS의 성능을 비교했고 더 성능이 나은 PostGIS를 선택했었습니다.  위치기반 서비스 데이터베이스 선택 [PostgreSQL GIS]들어가기  위치기반 서비스 데이터베이스 선택 [MySQL]들어가기현재 진행중인 프로젝트인 'AmorGakCo(아모르각코)'는 사용자들이 모각코 모임을 개설하고 사용자의 위치..
· Book Review
MySQL 서버 = MySQL 엔진 + 스토리지 엔진MySQL 엔진 = 클라이언트 접속 + 스토리지 엔진에 쿼리를 요청하는 커넥션 핸들러, SQL파서, 전처리기, 옵티마이저스토리지 엔진 = 디스크에 저장, 불러오기, SQL 문장 분석(파서와 다름), SQL 최적화, InnoDB의 경우 캐싱 기능(버퍼 풀) MySQL 스레딩 구조 [InnoDB 기준]포그라운드 스레드- 사용자와 커넥션을 맺고 사용자 수만큼 존재- 읽기 : MySQL의 버퍼나 캐시에 데이터가 존재하면 가져오고, 없다면 디스크로부터 읽는다.- 쓰기 : 버퍼나 캐시까지는 직접 쓰기, 버퍼로부터 디스크까지 쓰기는 백그라운드 스레드 담당 백그라운드 스레드- 로그 스레드 : 로그를 디스크에 쓰기- 쓰기 스레드 : 버퍼 -> 디스크 쓰기INSERT, ..
· Spring
들어가기  위치기반 서비스 데이터베이스 선택 [MySQL]들어가기현재 진행중인 프로젝트인 'AmorGakCo(아모르각코)'는 사용자들이 모각코 모임을 개설하고 사용자의 위치를 기반으로 모각코 모임을 조회하는 서비스입니다.서비스 기능의 핵심에는 사용curiosity-s.tistory.com  저번 포스팅에선 MySQL의 공간 검색 쿼리를 통해 DB Query, API Latency를 측정해봤습니다. 이번 포스팅에선 같은 데이터 셋(서울 지역 한식가게 약 4만6천 건)으로 PostgreSQL GIS 쿼리를 알아보고 MySQL과 비교해보겠습니다. Hibernate JPQL  Hibernate ORM User GuideStarting in 6.0, Hibernate allows to configure the d..
· Spring
들어가기현재 진행중인 프로젝트인 'AmorGakCo(아모르각코)'는 사용자들이 모각코 모임을 개설하고 사용자의 위치를 기반으로 모각코 모임을 조회하는 서비스입니다.서비스 기능의 핵심에는 사용자 현 위치를 기반으로 주변 모각코 모임을 조회하는 일입니다.어떤 데이터베이스를 선택하고 어떤 설계를 가져가야할 지 고민한 내용을 정리했습니다. 데이터 특성모각코 모임 데이터 특징은 아래와 같이 가정했습니다.데이터 생명주기는 짧게는 반나절 길게는 하루~이틀 예상종료된 모각코는 위치조회 대상에서 제외(비영구적)가장 활발히 모각코가 진행될 때 최대 5만건 정도로 가정 (한국 개발자 현황 약 80만명)한 모임에 4-5명인 모각코 모임을 최대 5만건으로 예상하면 참여자는 20만명이 넘기 때문에 충분한 가정이라 생각합니다.또한..
H@eCh@n
'분류 전체보기' 카테고리의 글 목록 (2 Page)