분류 전체보기
-
로드 밸런싱(Load Balancing)Computer Science/Network 2021. 9. 23. 17:44
Load Balancing 부하 분산 또는 로드 밸런싱이라고 하며, 컴퓨터 네트워크 기술 중 하나로, 둘 혹은 셋 이상의 CPU 나 저장장치와 같은 컴퓨터의 자원들에게 일을 나누는 것을 의미한다. 요즘 시대에는 웹사이트에 접속하는 인원이 급격하게 늘고 있다. 따라서 이 사람들에 대해 모든 트래픽을 감당하기엔 1대의 서버로는 부족합니다. 이에 대한 대응방안으로는 2가지가 있다. Scale-Up: 하드웨어의 성능을 올린다. Scale-Out: 여러대의 서버가 나눠서 일하도록 한다. 하드웨어 향상 비용이 더욱 비싸기도 하고, 서버가 여러대면 무중단 서비스를 제공하는 환경 구성이 용이하므로 Scale-Out 이 효과적이다. 이때 여러 서버에게 균등하게 트래픽을 분산 시켜주는 것이 바로 로드 밸런싱 이다. 로드 ..
-
Connection PoolComputer Science/Database 2021. 7. 24. 21:05
만약 Pool 을 사용하지 않는다면 DB서버에 최초로 연결하여 Connection 객체를 생성는 작업을 하기 때문에 비용적인 측면에서 큰 성능 저하를 겪게 된다. 이와 같은 문제를 해결하기 위한 것이 Connection Pool 이다. Connection Pool 이란? 동시 접속자가 연결 될 수 있는 Connection을 Pool이라는 컨테이너에 하나로 모아서 관리하는 개념입니다. WAS 실행 시 일정량의 Connection 객체를 생성하여 미리 Pool 이라는 캐시 공간에 저장해둔다. 만약 누군가 DataBase 에 접근한다면 Pool에 남아 있는 Connection을 제공하고, 만약 제공할 Connection이 없다면 클라이언트를 대기 상태로 전환시키고 Pool에 Connection이 반환된다면 대..
-
[NodeJS] crypto Module을 이용한 단방향 암호화Framework/NodeJS 2021. 7. 20. 19:02
crypto란 무엇일까? 문자열을 암호화, 복호화, 해싱할 수 있도록 도와주는 모듈입니다crypto 를 사용하여 Javascript 를 사용하는 웹 서비스에서 사용자의 정보를 안전하게 지킬 수 있습니다 * 해시(Hash) 단방향 암호화 기법으로 해시함수, 해시 알고리즘을 이용해서 고정된 암호화 된 문자열로 바꿔줍니다 * 해시 함수 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수입니다. 매핑 전 원래 데이터 값을 key, 매핑 후 데이터의 값을 해시 값 이라고 합니다. 그리고 매핑하는 과정을 해싱이라고 합니다 암호화 방식 단방향 암호화 : 복호화를 할 수 없는 암호화 방식입니다. 양방향 암호화 : 복호화가 가능한 암호화 방식입니다. * 복호화 암호화 된 문자열을 원래대로 되돌리는 방법..
-
[NodeJS] 메일 전송 기능 구현 - Nodemailer + GmailFramework/NodeJS 2021. 6. 27. 13:51
Nodemailer는 기본적으로 Node.js 사용자가 메일 전송 기능구현을 위해서 기본적으로 사용하는 모듈이라고 합니다.https://nodemailer.com/about/ 0. Gmail권한 설정하기 * 추후 기능 구현중 접근 관련 오류가 발생할 수 있으므로 여기 링크에서 '보안 수준이 낮은 앱 허용'을 사용으로 바꿔줘야 합니다. 그리고 내 구글 계정에 대한 액세스를 허용해줘야 하기 때문에 https://accounts.google.com/DisplayUnlockCaptcha 해당 링크에서 '계속'을 눌러서 허용해줘야 합니다. 1. nodemailer 모듈 설치$ npm install nodemailer 2. nodemailer 모듈 불러오기const nodemailer = require('nodem..
-
당근 마켓 - ERD 설계Computer Science/Database 2021. 6. 14. 15:16
ERD 설계를 하기 전에 ERD란 무엇인지 간단히 살펴보자. ERD(Entity Relationship Diagram) 개체 - 관계 모델(ERM)의 산출물에 대한 다이어그램으로DB에 있는 Table이나 Column, 그리고 데이터들에 대한 관계를 그림으로 표현 한 것입니다. 이러한 ERD 설계를 간편하게 할 수 있도록 도와주는 여러가지 툴들이 있는데 필자는 그 중 AqueryTool을 사용했습니다. https://aquerytool.com/ AQueryTool - AQuery.WebAQueryTool은 웹 기반 ERD 툴 + SQL 자동 생성 프로그램입니다.aquerytool.com 당근 마켓 ERD FK 같은 경우는 형식상 있다고 가정하에 진행하였습니다. 왜냐하면 FK(외래키) 때문에 DML 명령어..
-
MYSQL - 날짜 중복 확인 쿼리Language/MySQL 2021. 6. 7. 17:31
- Query: 시작일이 종료일 보다 작고 종료일이 시작일 보다 큰 경우. 1 2 3 4 select * from A where startDate 비교할 시작 날짜; cs - 예제 위의 데이터 중 '2021-06-01 ~ 2021-06-09' 사이의 날짜가 존재하는 데이터를 출력해보면, 1 2 3 4 SELECT startDate, endDate FROM ReservationTB where startDate '2021-06-01'; cs '2021-06-01 ~ 2021-06-09' 날짜에 겹치는 날짜들이 모두 조회되는 것을 확인할 수 있습니다.
-
MYSQL 페이징 기법(LIMIT)Language/MySQL 2021. 5. 21. 22:54
게시판이나 상품정보등 몇백개 이상이 되는 정보들을 한번에 조회하게 된다면 충분히 과부하가 걸릴 수 있습니다. 이를 최소화 해주는 방법이 바로 페이징 기법입니다. MYSQL에서 이를 구현하기 위해서는 'LIMIT'을 사용하면 됩니다. LIMIT은 출력되는 레코드의 개수를 제한해주는 기능을 가지고 있습니다. 단순 SELECT문을 실행 시 165개의 레코드가 조회되지만, LIMIT을 사용하였을 때는 10개의 데이터만 조회되는 것을 확인할 수 있습니다. 그렇다면 앱을 사용하는 유저가 어떻게 계속해서 N개의 상품, 게시판등을 볼 수 있을까? 방법은 Table의 고유 index값을 사용하면 됩니다. 클라이언트가 서버에 사용자가 조회한 마지막 index 값을 보내준다면 그 값을 기준으로 N개의 데이터를 조회하여 Re..
-
gitignore 설정하기Github 2021. 5. 21. 01:23
git에서 버전관리를 할 때 굳이 올리지 않아도 되는 파일이나 개인 정보에 관련된 Secret Key와 같은 중요한 파일들은 올리면 안되는데 이럴 때 최상위 디렉토리에 ' .gitignore '파일을 작성하여 git에 올라가지 않도록 설정할 수 있다. 1. '.gitignore' 파일 생성 최상위 디렉토리에 '.gitignore' 파일을 생성해준다. 2. 버전관리를 하지 않을 파일 작성 git에서 버전관리를 하지 않을 파일들을 작성해준다. 작성했다면 해당 파일들은 git에 올라가지 않을 것이다. 이미 버전관리가 진행되고 있는 경우 위와 같이 파일 생성과 작성을 한 후 간단한 커맨드를 통해 적용할 수 있다. ' git rm -r --cached . ' 명령어 입력 후 ' git add . '명령어를 입력하..