본문 바로가기

개념정리

12/15[TIL]Deploy 기존에 로컬 개발 환경에서 코딩을 하여 코드가 제대로 구동되는지 확인했다면 로컬 개발 환경에서만이 아닌 다른 컴퓨터에서도 내가 구현한 코드가 잘 구동되는지 확인해보아야 할 것이다. 이를 이행하게 하는 것이 Deploy(배포)라고 한다. Deploy 되는 과정을 최소한의 단위로 나누어 본다면 Development 코딩 / 구현 및 테스트 과정 Integration 기존의 코드와 트러블 및 팀원 코드와의 트러블, 다른 기능 침범 유무 등을 확인하는 과정 Staging 배포 환경과 가장 유사한 단계 즉 준배포 단계에서 다시 테스트하는 과정 Production 준배포 단계에서 이상이 없을 경우 배포과정 위와 같이 최소 이렇게 4단계로 진행되지만 서비스가 점점 더 커질수록 단계들이 복잡해지고 정교해진다. 배포하기.. 더보기
12/11[TIL]Authentication(3) OAuth 2.0 인증을 위한 표준 프로토콜의 한 종류 보안된 리소스에 액세스 하기 위해 클라이언트에게 권한을 제공(Authorization)하는 프로세스를 단순화하는 프로토콜 중 한 방법 유저 입장에서 생각해보자면, 우리는 웹 상에서 굉장히 많은 서비스들을 이용하고 있고 각각의 서비스들을 이용하기 위해서는 회원가입 절차가 필요한 경우가 대부분인데 서비스별로 ID와 Password를 다 기억하는 것은 매우 귀찮은 일이다. 하지만 OAuth를 활용한다면 자주 사용하는 서비스들(예를 들어 google, github, facebook)의 ID와 Password만 기억해 놓고 해당 서비스들을 통해서 소셜 로그인을 할 수 있다. 뿐만 아니라 OAuth는 보안상의 이점도 있다. 검증되지 않은 App에서 OAuth를.. 더보기
12/10[TIL]Authentication(2) Token 세션 기반의 인증은 서버 혹은 DB에 유저의 정보를 담는 방식으로 이 부담을 클라이언트에게 넘겨줄 수 없을까? 에서 고안되었다. 서버에서는 유저가 민감하거나 중요한 정보를 요청할 때마다 지금을 요청을 보낸 유저에게 정보를 줘도 괜찮은 건지 가지고 있는 세션 값과 일치하는 지를 확인한다. 그렇게 되면 매번 DB 를 살펴보아야 한다는 부담이 생기게 된다. 이와 같은 부담을 없애는 것이 토큰 기반 인증이다. 대표적으로 JWT가 있다. 토큰이란? 화폐로 사용하는 토큰을 생각하면 될 것이다. 토큰 기반 인증 방식은 클라이언트에서 인증 정보를 보관하는 방법으로 고안되었다. 클라이언트가 토큰을 가지고 있으면 서버에게 토큰을 보여주고 다양한 기능 요청이 가능하다. 하지만 앞서 클라이언트에는 XSS, CSRF.. 더보기
12/9[TIL]Authentication HTTPS http 프로토콜 내용을 암호화한 것이다. https의 특징에는 인증서 / CA / 비대칭 키 암호화가 있다. 인증서 도메인 종속되며 데이터를 보내준 서버가 정말 데이터를 보내준 서버인지 인증 확인하는 용도이며 데이터 제공자 신원보장을 한다고 생각하면 된다. 서버는 인증서와 함께 응답을 전송하고 그럼 응답을 받은 클라이언트는 인증서에 작성된 도메인과 응답객체에 작성된 도메인을 비교한다. 만약 도메인이 같지 않다면 이는 제 3자가 개입 된 상황이기 때문에 이는 클라이언트가 서버가 아닌 다른 제공자인 것을 이러한 경우 알 수있다. CA 공인인증서 발급기관이다. 비대칭 암호화 방식 전혀 다른 키한쌍으로 암호화 및 복호화가 가능하다. 어느 한 키로 암호화를 진행했다면 복호화는 다른 키로 가능하다. 하.. 더보기
12/7[TIL]MVC Pattern MVC 소프트웨어가 돌아가는 방식에 대한 하나의 패턴 이러한 MVC 패턴으로 만들어진 라이브러리라던지 프레임워크 들이 존재한다. 서비스가 잘 진행되기 위해 각 기능별로 나눈다.(모델 / 뷰 / 컨트롤러) 코드 가독성, 코드 관리, 코드의 질 향상 Ruby on Rails(ruby) / express(js) / Laravel(PHP) / Backbone(js) / Codeigniter(PHP) / Angular(js) / Django(python) / Flask(python) Model 데이터의 정보를 가지고 있다. DB와 연결되어 있어 데이터를 가지고 올 수 있다. 자기 자신이 가지고 있는 데이터나 DB에서 가져온 데이터들로 Controller와 상호작용한다.(데이터반환) 모델이 View 직접 대화하는 .. 더보기
12/2[TIL]SQL SQL이란? DB용 프로그래밍 언어 DB에 query(저장되어 있는 정보를 필터 하기 위한 질문)를 보내 원하는 데이터만을 뽑아 올 수 있게 한다. DB가 필요한 이유 기존에 in-memory기법은 서버를 끄게 되면 데이터가 사라지게 된다. File I/O같은 경우에도 원하는 데이터를 가지고 올 수 없고 항상 모든 데이터를 가져온 후 서버에서 필터링이 필요하다. 그렇게 되면 서버 과부하가 생기게 된다. 그렇기에 필터링 외에도 File I/O로 구현이 힘든 관리를 위한 여러 기능들을 가지고 있는 데이터에 특화된 서버인 DB를 사용하게 된다. 스키마란? DB에서 data가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명으로 DB의 청사진과 같다. 엔티티 는 고유한 정보의 단위, DB에서는 테이블로 .. 더보기
11/24[TIL]Redux 기존에 React에서는 state는 컴포넌트 안에서 관리하고 형제 컴포넌트들 간에 데이터를 주고받을 때 부모 컴포넌트를 통해 주고받는데 deep 한 컴포넌트에게 데이터를 보내야 한다면 상태 관리가 매우 힘들게 된다. 그렇게 나온 해결책의 개념이 Redux(state container)이다. 같은 상태를 공유하고 싶을 때 Redux를 사용하게 된다. Redux를 설명하기 앞서서 여러가지 기본적인 개념이 존재하는데 먼저 상태가 관리되는 오직 하나의 공간인 store가 존재한다. 그리고 js 객체에 해당사항을 입력하여 보내는 action 즉, 주문서가 존재한다. 또한 현재 state와 action을 이용해 다음 상태를 만들어대는 Reducer가 존재하는데 여기서 Reducer는 순수 함수이다.함수이다. Red.. 더보기
11/23[TIL]Module / Bundler / 비동기 / Virtual Dom / Hooks Module 코드에서 특정 기능을 하는 부분을 떼어내서 함수로 만든 것으로 우리가 코드를 분리하는 이유는 재사용성 / 유지보수 / 범용적 사용에 장점을 가지기 때문이다. 하지만 이러한 모듈을 사용하는 것도 어느 부분이 다른 부분에 의존하게 되면 오류가 생기게 되고 그렇기에 순서가 중요해지고 그 에 따른 스코프 관리 또한 중요해진다. 즉 코드가 복잡해 질 수록 점점 더 module을 관리(사용) 하기 어려워진다는 것이다. 앞서 이러한 점을 해결하기 위해 js의 범용적 사용을 위한 모듈 시스템 구축의 선두주자라고도 불리우는 common JS 가 해결책으로 나왔다. 모든 모듈은 자신만의 독립적인 실행 영역(스코프)이 있어야 한다. 그리고 모듈 정의는 전역객체인 export 객체 사용하며 모듈의 사용은 requ.. 더보기