분류 전체보기 122

배포 전략

지금까지는 로컬 환경에서 클라이언트와 서버, 데이터베이스를 띄워서 작성한 코드를 구동하고 확인했었습니다. 우리가 개발한 서비스를 외부에서 사용자들이 접속할 수 있게 하려면 어떻게 해야 할까요? 개 발한 서비스를 사용자가 이용할 수 있도록 하는 것을 배포라고 합니다. 어떻게 사용자들이 여러분이 개발한 서비스를 이용할 수 있게 할 수 있을까요? 사용자들에게 localhost:3000의 주소로 들어오라고 할 수는 없을 것입니다. 그렇다면 사용자들에게 Client를 어떻게 제공할지 그리고 Client를 받은 사용자들이 서비스를 이용하기 위한 요청을 처리할 Server를 어떻게 제공할 것인지 Server의 데이터를 저장하고 제공할 Database는 어떻게 제공할 것인지 생각해 봐야 합니다. 작성한 Client 코..

AWS 2022.05.10

AWS S3란

S3가 무엇인지 알아보기 전에, 클라우드 스토리지 개념에 대해 잠시 알아보는 시간을 가져보겠습니다. 클라우드 스토리지란 뭘까요? 클라우드 스토리지란 쉽게 말해서 인터넷 공간에 데이터를 저장하는 저장소입니다. 컴퓨터 부품으로 비유하면 하드디스크의 역할을 하는 서비스입니다. 우리는 알게 모르게 클라우드 스토리지 서비스를 이용해왔습니다. 구글의 Google Drive, 네이버의 MYBOX, 마이크로소프트의 Onedrive와 같은 서비스가 좋은 예시입니다. 클라우드 스토리지 서비스의 장점으로는 어떤 것이 있을까요?? 클라우드 스토리지 서비스는 뛰어난 접근성을 가지고 있습니다. 컴퓨터의 하드디스크에 저장된 파일에 접근하기 위해서는 해당 컴퓨터를 이용해야만 합니다. 그러나 클라우드 스토리지를 이용하면 웹 환경이라면..

AWS 2022.05.10

AWS RDS란

RDS는 Relational Database Service의 약자로 AWS에서 제공하는 관계형 데이터베이스 서비스입니다. 관계형 데이터베이스에 대한 개념은 이미 Database Sprint에서 학습하셔서 익숙하실 거라고 생각합니다. 왜 RDS를 사용할까요? 우리는 이전 슬라이드에서 EC2가 가상의 컴퓨터를 임대하는 서비스라고 배웠습니다. EC2 인스턴스에 MySQL 같은 관계형 데이터베이스 엔진을 설치하면 굳이 RDS를 사용할 이유가 없지 않을까요? 데이터베이스만 따로 분리해서 서비스를 이용해야 할 이유가 있을까요? EC2 인스턴스에 관계형 데이터베이스 엔진을 설치해서 데이터를 관리할 때와 RDS를 통해 데이터를 관리할 때의 차이는 개인 소유 차량과 렌터카 회사에서 대여한 차량으로 비유할 수 있습니다. ..

AWS 2022.05.10

AWS EC2

EC2란 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스입니다. 클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스입니다. 정리하면 아마존에서 가상의 컴퓨터를 한 대 빌리는 것과 같습니다. AWS에서 제공하는 Elastic Compute Cloud 서비스 앞에 붙은 Elastic이라는 단어는 어떤 의미일까요? 해당 단어는 고사양 게임을 플레이하는 것에 비유하여 설명하면 이해하기 편합니다. 집에서 고사양 게임을 하기 위해서는 게임을 1시간을 하든지 10시간을 하든지 간에 기본적으로 지출해야 하는 돈이 있습니다. 그런데 후불제 PC방에 간다면 집에서 게임을 하기 위해서 기본적으로 지출해야 하는 비용 대신, PC방을 사용한 시간에 대해서만 비용을..

AWS 2022.05.10

Deploy란

배포란 우리가 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정입니다. 회사마다 추가적인 과정이 있을 수 있지만, 기본적으로 4단계를 거쳐서 개발한 서비스를 배포하게 됩니다. Development 단계는 각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정입니다. 개발 단계이기 때문에 실제 데이터를 이용하지 않고 더미 데이터를 이용해서 테스트합니다. Integration 단계는 각자의 컴퓨터에서 작성한 코드를 합치는 과정입니다. 내가 작성한 코드가 다른 코드를 침범해서 오류를 일으키지 않는지, 코드 간에 conflict가 있지는 않은지 확인하는 과정을 거칩니다. Development 환경과 Production 환경은 서로 다를 수가 있습니다. 여러분이 개발부터 배포까지 모든 것을 통제할 수 있는 상..

AWS 2022.05.10

Cloud Computing

본격적으로 클라우드 컴퓨팅에 대해 알아보기 전에 클라우드 컴퓨팅의 등장 배경에 대해서 알아보겠습니다. 클라우드 등장 이전에는 흔히 말하는 전산실 등에 컴퓨터를 배치하고 인터넷을 연결하여 서비스를 제공했습니다. 그런데 만약 서버가 요청에 대한 수용 능력이 한계에 도달한다면 어떻게 대처할까요? 같은 공간에 더 많은 컴퓨터를 제공하여 한 대가 해결할 수 있는 요청을 여러 대가 나누는 방식을 사용할 수 있습니다. 혹은 컴퓨터 한 대의 성능을 높이는 방식을 사용할 수도 있습니다. 하지만 이런 방식은 몇 가지 문제점들을 가지고 있었습니다. 첫째. 주기적인 관리가 필요합니다. 흔히 말하는 서버실에는 종종 고장이 나거나 인터넷과 연결이 되지 않는 컴퓨터가 생기기도 합니다. 이런 상황이 발생한다면 이를 해결하기 위한 인..

AWS 2022.05.10

Git 브랜치 명령어 모음

새로운 브랜치 생성 $ git branch 새로운 브랜치 이름 새로운 브랜치 생성 후 해당 브랜치로 전환 $ git switch -c 새로운 브랜치 이름 $ git checkout -b 새로운 브랜치 이름 브랜치 목록 확인 $ git branch 브랜치 목록과 각 브랜치의 최근 커밋 확인 $ git branch -v 브랜치 삭제 $ git branch -d 삭제할 브랜치 이름 $ git branch -D 해당 명령어는 병합하지 않은 브랜치를 강제 삭제하는 방법입니다. 브랜치 전환 $ git switch 브랜치 이름 $ git checkout 브랜치 이름 브랜치 병합 master 브랜치로 dev 브랜치를 병합할 때 (master ← dev) $ git checkout master $ git merge de..

CLI,Git,GitHub 2022.05.10

OAuth 2.0

여러분이 웹이나 앱에서 흔히 찾아볼 수 있는 소셜 로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현됩니다. 전통적으로 직접 작성한 서버에서 인증을 처리해 주는 것과는 달리, OAuth는 인증을 중개해 주는 메커니즘입니다. 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜입니다. 즉, 이미 사용자 정보를 가지고 있는 웹 서비스(GitHub, google, facebook 등)에서 사용자의 인증을 대신해 주고, 접근 권한에 대한 토큰을 발급한 후, 이를 이용해 내 서버에서 인증이 가능해집니다. OAuth가 모든 것을 해결해 주는 솔루션은 아닙니다. 여전히 사용자 정보가 내 서버에 저장되는 것은 변함이 없습니다. OAuth는 인증(Authentication)..

인증,보안 2022.03.20

토큰 기반 인증

토큰 기반 인증은 왜, 그리고 언제 쓸까요? 세션 기반 인증은 서버(혹은 DB)에 유저 정보를 담는 인증 방식이었습니다. 서버에서는 유저가 민감하거나 제한된 정보를 요청할 때마다 "지금 요청을 보낸 유저에게 우리가 정보를 줘도 괜찮은가?"를 확인하기 위해 가지고 있는 세션 값과 일치하는지 확인합니다. 매 요청마다 데이터베이스를 살펴보는 것이 불편하고, 이 부담을 덜어내고 싶다면 어떤 방법이 있을까요? 이럴 때 사용할 수 있는 토큰 기반 인증 중 대표적인 JWT (JSON Web Token)에 대해서 알아봅시다. 클라이언트에서 인증 정보 보관하기 토큰이 뭐죠? 라는 질문을 한다면 여러분들은 동전을 흔하게 떠올리실 수 있을 것 같습니다. 오락실 게임에 사용하는 토큰 행사에 입장하기 위해서 주최 측에서 나누어..

인증,보안 2022.03.20

세션기반 인증

로그인 본격적으로 로그인을 통해 인증 정보가 저장되고, 인증된 사용자가 어떤 식으로 웹사이트를 이용하는지 간단하게 알아봅시다. 사용자가 웹사이트에서 아이디 및 비밀번호를 이용해서 로그인을 시도하면(그림 1), 과연 어떤 일이 벌어질까요? 사용자가 만일 정확한 아이디와 비밀번호를 입력했다면, 서버는 인증(Authentication)에 성공했다고 판단할 것입니다. 그렇다면, 다음번에 인증을 필요로 하는 작업(그림에서와 같이, 장바구니에 물품 추가)을 요청할 경우, 또 로그인 과정을 거쳐야 할까요? 아닙니다. 서버는 아이디 및 비밀번호의 해시를 이미 알고 있기 때문에, "인증에 성공했음"을 서버가 알고 있다면, 매번 로그인할 필요가 없을 것입니다. 인증에 따라 리소스의 접근 권한(Authorization)이 ..

인증,보안 2022.03.20