개발지식
-
[개발지식] 스택(STACK), 큐(QUEUE)개발지식 2022. 5. 2. 10:57
스택(STACK) 스택이란 쌓아 올린다는 것을 의미한다. 스택 구조라는 것은 책을 쌓는 것처럼 하나하나 쌓아 올린 형태의 자료구조이다. 스택(STACK) 특징 스택은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있고, Top으로 정한 곳을 통해서만 접근할 수 있다. Top에는 가장 위에 있는 자료는 가장 최근에 들어온 자료를 가르키고, 삽입되는 새 자료는 Top이 가리키는 자료의 위에 쌓이게 된다. 스택에서 자료를 삭제할 때도 Top을 통해서만 가능하다. 스택에서 Top을 통해 삽입하는 연산을 "push", Top을 통한 삭제하는 연산을 "pop"이라고 한다. 따라서 스택은 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다는 구조적 특징을 가지게 된다. 이러한 스택 구조를 후입선출(LIFO, Last-..
-
[개발지식] 데이터베이스 인덱스(INDEX)개발지식 2022. 3. 28. 15:51
인덱스(INDEX) 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료구조 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터 물리적 주소와 같이 저장된다. 인덱스(INDEX)를 사용하는 이유 조건 검색 WHERE 절의 효율성 테이블 안에 데이터들이 쌓이게 되면 테이블의 레코드는 내부적으로 순서가 뒤죽박죽 저장이 된다. 이렇게 되면 WHERE절의 특정 조건에 맞는 데이터들을 찾아낼때도 레코드의 처음부터 끝까지 다 읽어서 검색 조건과 맞는지 비교해야 한다. 이것을 Full Table Scan이라고 한다. 하지만 인덱스 테이블은 데이터들이 정렬되어 저장이 되어 있어서 해당 조건(WHERE)에 맞는 데이터들을 빠르게 찾아낼 수 있다. 이것이 인덱스(INDEX)..
-
[개발지식] Git과 GitHub개발지식 2022. 3. 25. 16:01
버전 관리의 필요성 개발자 사이에서 협업을 위해서 전체 개발 소스를 공유하면서 개발 파트를 나눌 수 있고, 같은 모듈을 개발을 하더라도 소스를 공유하며 개발을 할 수 있기 때문이다. Git 오픈 소스 버전 관리 시스템 (VCS: Version Control System) 로컬에서 버전관리 소프트웨어 개발 및 소스 코드 관리에 사용 Git은 본인 코드와 그 수정내역을 기록하며 관리하도록 돕는 버전 관리 프로그램이고, 로컬에서 프로젝트의 기록을 스스로 관리할 수 있도록 해준다. Git을 통해 브랜치를 생성하고, 이전 브랜치로 복구, 삭제, 병합이 가능하다. 하지만 로컬 저장소를 사용하기 때문에 다른 개발자와 실시간으로 작업을 공유할 수 없다. GitHub Git Repository를 위한 웹 기반 호스팅 서..
-
[개발지식] JSON을 사용하는 이유개발지식 2022. 3. 25. 11:25
JSON이란? JavaScript Object Notation이라는 줄임말로 데이터를 저장하거나 전송할 때 많이 사용하는 경량의 데이터 교환 형식이다. JSON은 데이터 포맷일 뿐 어떠한 통신 방법이나 프로그래밍 문법이 아니라 단순히 데이터를 표시하는 표현 방법일 뿐이다. JSON특징 서버와 클라이언트 간의 교류에서 일반적으로 사용된다. JSON 문서 형식은 JavaScript 객체의 형식을 기반으로 만들어졌다. JavsScript 문법과 유사하지만 텍스트 형식일 뿐이다. 특정 언어에 종속되지 않고, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다. JSON을 사용하는 이유 네트워크를 사용하는 데이터 통신은 데이터를 byte 형태로 전달한다. 서버와 클라이언..
-
[개발지식] 서버 스케일링개발지식 2022. 3. 23. 00:01
트래픽 서버에서 동작하는 서비스에 클라이언트가 접속하여 발생되는 데이터의 전송 수치 서비스를 이용하면 그만큼 서버에서 많은 요청이 가게된다. 서버에 접속량이 많이 늘어남에 따라서 트래픽이 높아지게된다. 트래픽이 높아질수록 서버는 일을 바로 처리할 수 없기 때문에 응답이 밀리게되는 병목현상이 발생한다. 서버 확장 방법 스케일 아웃 서버를 여러대로 늘리는 것을 말하며, 트래픽을 분산시켜서 하나의 서버가 일하는 양을 분산시켜주는 것이다. 서버가 여러 대가 되기 때문에, 각 서버에 걸리는 부하를 균등하게 해주는 로드밸런싱이 필수다. 스케일 아웃은 서버 한대가 장애로 다운되더라도 다른 서버로 서비스 제공이 가능하다는 장점이 있다. 반면에 모든 서버가 동일한 데이터를 가지고 있어야 하므로, 데이터 변화가 적은 웹 ..
-
[개발지식] 애자일 방법론 - 스크럼(Scrum)개발지식 2022. 3. 15. 19:02
스크럼(Scrum) 유지보수보다는 개발에 초점이 맞추어진 애자일 방법론 중 하나이다. 스크럼 원칙 개발 주기마다 적용할 기능이나 개선에 대한 목록 작성 (Backlog 작성) 신규 기능, 기존 로직 개선점 등 우선 순위 부여 개발 주기는 30일 정도 조절하여 개발 주기마다 실제 동작하는 결과 제공 일일 15분 정도의 회의 항상 팀 중심적 사고 원활한 의사소통 조직을 작게 만들며, 자기 조직적인 팀이면 더 좋고, 개발 사항은 1 ~ 2시간 단위로 가능한 작은 단위로 만드는 것이 좋다. 또한 Sprint 결과를 리포트, 회고 한다. 스프린트(Sprint) 반복되어 진행되는 기간을 의미하며 크지 않은 양의 업무를 적당한 기간 동안 집중해서 전력 질주하듯 업무를 수행하는 것을 의미한다. 평균 1 ~ 2주의 기간..
-
[개발지식] 애자일 방법론개발지식 2022. 3. 15. 18:34
애자일 방법론? 기민한, 날렵한이라는 뜻으로 좋은 것을 빠르게 취하고, 낭비 없게 만드는 다양한 방법론을 통칭해서 일컫는 말이다. 앞을 예측하여 개발하지 않고, 일정한 주기를 가지고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙히며 개발해 프로세스 모델 방식이다. 미리 정해진 몇 개의 단계에 따라서 엄격한 순서대로 이루어지는 일직선의 과정인 폭포수의 프로세스와 반대되는 개념이다. 애자일 방법론 진행 과정 계획 -> 설계(디자인) -> 개발(발전) -> 테스트 -> 검토(피드백) 순으로 반복적으로 진행된다. 계획을 세운 후 다음 단계까지 기다려서 절차대로 진행하는 폭포수 모델과 다르게 진행 후 분석, 시험, 피드백을 통해 개선해 나가는 진행 모델이다. 계획 및 분석: 고객과..
-
[개발지식] AWS EC2 배포하기 (mongoDB)개발지식 2022. 3. 15. 14:53
EC2 서버 구매하기 SSH (Secure Shell Protocol) 다른 컴퓨터에 접속할 때 쓰는 프로그램으로, 다른 것들 보다 보안이 상대적으로 뛰어나다. 접속할 컴퓨터가 22번 포트가 열려있어야 접속이 가능하다. AWS EC2의 경우에는 이미 22번 포트가 열려있다. AWS EC2 접속하기 (Mac OS 기준 - Mac은 ssh가 있어서, 명령어로 바로 접근이 가능하다.) 1. 터미널 실행 2. AWS EC2 서버 구매 시 받은 Keypair의 접근 권한을 바꿔주기 sudo chmod 400 받은 키페어를 끌어다 놓기 3. SSH로 접속하기 ssh -i 받은 키페어 끌어다놓기 ubuntu@AWS에 적힌 내 아이피 4. EC2에 Node.js 설치하기 curl -sL https://deb.nodes..