데이터베이스 인덱스란?
데이터베이스의 인덱스란, 추가적인 쓰기작업과 저장공간을 활용하여, 검색 성능을 향상 시키는 방법이다. full scan을 하지않고, 인덱스를 활용하여 데이터가 존재하는 곳의 위치를 빠르게 찾을수 있다. 인덱스를 활용하면, select, update, delete를 빠르게 처리할수있다. 해당 사유는, 해당 작업을 하기 위해 선작업이 되는것이 먼저 select 이기 때문이다. index는 최신의 정렬상태를 유지해야하기 때문에, insert나, delete, update 작업을 할때, index가 걸려있는 것이라면, 추가적인 연사을 해준다. (index 재정렬이 필요하기 때문에) 일단, 구조를 알기전에 장단점을 알자 장점 : 검색속도 향상, 전반적인 시스템 부하를 줄일수있다. 단점 : 인덱스 관리를 위해 db..
oAuth 의 동작 과정 및 이해
oAuth가 필요한 이유는 무엇일까? 각각의 웹사이트에서는 각기 다른 인증방법을 가진다. 각기 다른 인증방법을 가지게되면, 각각 다르게 개발되어있는 인증 시스템들을 감안하여, id,pw를 쳐서 각각 다르게 들어가야한다. 일단 구조는 아래와 같은 구조를 가진다. 간단하게 oAuth는 인증과 권한을 획득하는 것이다. 각 애플리케이션들이 개인정보에 대한 저장을 각자하게되고, id,pw에 대한 제공을 각 애플리케이션마다 하게되면서, 한가지의 플랫폼을 통해서 로그인하는 방법이 나오게 되었다, 쉽게 말하면, 서비스를 통해서, Oauth를 제공하는 쪽의 로그인을 요청하고, 해당 Oauth에서 권한 코드를 발급한다. 발급함과 동시에, 콜백 url로 리다이렉트 시킨다. 이 url을 기반으로 access토큰을 요청, 및 ..
Docker 사용이유, 장점
Docker는 서버 컨테이너 기술이다. 서버 컨테이너 기술은, application을 환경에 구애 받지 않고, 실행시켜주는 기술이다. 이렇게 만 써져 있으면, 공부를 이제 시작하는 사람이라면, 해당 글을 보고 ?_? 어쩌라는 거지 라고 생각을 하게 된다. 좀 더 구체적으로 예를 들어서, 해당 설명을 해볼까한다. 실제 서비스를 운영하기 위해서는, 여러가지의 서버를 동시에 띄우게 된다. api, data-api등등 다양한 서버들을 띄우게 되고 이서버의 같은 application을 깔더라도, 같이 호환하는 것들에 대한 구성을 같이 할수 없는 경우가 존재한다. 예를 들어서, 어떤 서버를 구성하는 app은 최근이여서 3.4버전을 이전 서버는 2.1 버전을 설치한다고하고 운영중에, 버전차이로인해 다운을 겪었다고 가..
무 중단 배포 , 블루-그린 방식의 배포
내가 다니는 회사, 그리고 대부분의 회사에서는 무중단 배포 시스템을 가질 것이다. 이렇게 무중단 배포를 하기 위해서 가장 많이 사용하는 방식은 블루-그린 방식의 배포 방법이다. 24시간 서비스를 해야하는, 배포가 되어도, 중단이나 다운타임을 가지면 안되는 서비스들에서 가장 많이 가지는 방식이며, 해당 방법에 대해서 알아보도록 하자 무중단 배포가 되기 위해서는 우선 로드 밸런서를 통해 연결된 두개 이상의 인스턴스에서 트래픽을 제어해서 배포하는 것이다. 1) 롤링 배포 롤링 배포는, 한개의 인스턴스를 로드밸런서를 통해, 라우팅 하지 않도록 설정한뒤에, 해당 인스턴스의 버전을 높이고, 다시 라우팅하여, 점진적으로 배포하는 방식으로의 배포이다. 해당 부분은, 배포 중간 롤백에 대해서는 비교적 자유롭지만, 신버전..
Prepared statement와 statement의 차이
Mybatis 로 개발을 진행하다면, 해당 prepared statement와 일반 statement의 차이에 대해서 알아두어야 할 필요가 있다. Mybatis에서 단적인 예로, 쿼리의 파라미터에 대한 방법을 다르게 줄 수 있다. 1. #{storeNo} , ${storeNo}가 있다. mybatis에선 해당 #, $를 다르게 쓸수가 있는데, 해당 방법에 대해서는, 어떤 차이가 있는지 살펴보자, 우선 #{} 과 같은 쿼리문은, 같은 쿼리문을 바인드 변수값만 바꿔서 반복적으로 실행하기 위해 사용하는 prepared statement이다. 해당 방법은 어떻게 동작할까? 우선 Prepared statement를 동작시키면, 해당 쿼리는 ?가 표함된, 쿼리문을 DBMS로 보내게 된다. 해당 DBMS는 해당 쿼리..