라벨이 구조인 게시물 표시

AWS 1-WWW에 HTTPS웹사이트를 올리기(Route53, CloudFront, S3) - 구조 파악

이미지
 안녕하세요. 알렉스 입니다. 이번 시리즈는 AWS를 이용하여 https프로토콜이 적용된 웹사이트를 올리도록 하겠습니다. 일단 전체적인 구조와 흐름에 대해서 설명을 하도록 하겠습니다. 사진1) 이번 시리즈에서 구성된 개념도  사진1에 대한 간단한 설명으로 시작은 S3입니다. S3에 간단한 HTML, CSS, JavaScript로 작성한 코드를 저장합니다. 물론 index.html로 정적으로 웹사이트가 동작되어야 합니다.  다음 도매인을 구매합니다. 도매인 구매는 Route53에서 진행하도록 하겠습니다. 이후 구매한 도매인에 대한 인증서를 발급받기 위해서 AWS Certification에서 신청을 하고 이 모든것을 CloudFront에서 역어줄 것입니다.  나중에 작성하겠지만 CloudFront없이도 배포를 진행할수 있습니다. 하지만 이번에는 CloudFront를 이용하겠습니다.  CloudFront를 사용하는 이유는 S3의 데이터를 캐시에 넣고 전세계 AWS 리전과 고유가 되기 때문입니다. 사진2) 전세계 리전(참고용-정확하지 않음) AWS서비스는 전세계 여러곳에 데이터 센터가 있습니다. 만약 사진2번에서 1번(서울)에 베이스로 하는 웹사이트가 있는데 4번(미국서부)에사는 사람이 웹사이트에 접속할려고 합니다. 하지만 거리상 문제때문에 시간이 걸립니다.   하지만 CloudFront를 하용하게 되면 전세계에 존재하는 AWS 데이터 센터에 캐시가 등록이 됩니다. 그래서 실제 미국 서부에 살아도 서울까지의 긴거리를 연결할 필요없이 4번 리전에서 간단하게 캐시를 받아서 웹사이트를 진행하면 됩니다.  물론 단점도 있는데 서울에 있는 서버의 내용이 변경이 되면 바로 반영이 안됩니다. 수동으로 캐시를 업데이트하거나 정기 업데이트까지 기다려야 합니다. 그래도 이번 시리즈에서 간단한 배포이기 때문에 CloudFront를 사용하도록 하겠습니다.

nest js -1 Structure

이미지
안녕하세요. 저번에 작성한 글( nest js - install & Create Project from Linux or Ubuntu )에 이어서 nest js에 대한 구조를 알아보도록 하겠습니다. nest js의 프로젝트를 생성하면 여러개의 폴더와 파일들이 생성되는 것을 알수 있습니다. 그중에서 src폴더가 실제적으로 API동작을 하게 됩니다.   그럼 표를 보면서 어떤식으로 동작하는지 설명 드리겠습니다. 1) 프로젝트 생성시 나오는 폴더(members제외) 2) app 및 main관계도 생성된 파일을 보면 4개가 생성됬음을 알수 있다.  app.service.ts : app.controller에서 해당 method를 사용한다. app.controller : 웹상에서 요청(request)이 오면 그것을 처리하고 return한다. return한 내용은 곧      respone 내용이다. app.module  - imports : 다른 모듈이 존재시 추가할수 있다. (아래 사진에서는 members, 기본적으로 비어있음) - controllers : app.controller의 Class AppController를 받는다. - providers : Class AppController 에 사용할 method을 제공받는다. - main : app.module에 있는 class AppModule를 app에 받고 서버를 실행한다. 2번의 구조를 보면 역할이 모두 나누어 진것을 알수 있습니다. 다른 모듈들을 만들때도 이와 같은 방법으로 만듭니다.  3) members모듈 구조  이제 앞으로 글을 작성할때 코딩할 members모듈을 구조로 그려봤습니다. 위 구조에서 보면 app의 모듈과 상당히 유사한 것을 알수 있습니다.   간단히 설명하자면 모든 멤버의 데이터를 GET요청으로 받아오는 것입니다. 물론 실제로는 있으면 안되고 더군다나 비밀번호도 포함되어있기 때문에 예제로만...

Linked List 구조 및 원리

이미지
 안녕하세요. 저번의 연장으로 이번에는 Linked List의 구조와 원리에 대해서 배우겠습니다.  커다란 창고에서 제가 바나나가 들어있는 상자를 찾고 있습니다. 이때 창고는 크게 4구역으로 나눠져 있습니다. A,B,C,D구역이고 저는 일단 A구역에 무슨 과일이 있는지 확인하기로 하고 A구역으로 갑니다.  이때 A구역에 아쉽게 바나나가 아닌 사과가 있습니다. 이때 이 사과를 head라고 합니다. 머리 부분이라는 것입니다.  또한 사과상자에 노란 포스트잇이 붙어있는데 이것은 다음 어느 구역으로 가야하는지 적혀져 있습니다. 이 노랑 포스트잇은 프로그래밍을 할때 다음 값으로 갈수 있도록 하는 주소역할을 합니다.  제가 이제 D구역으로 갔는데 망고박스 과일이 있고 포스트잇에는 B구역 이라고 적혀져 있습니다.  제가 B구역에 가도 바나나를 찾지 못하고 토마토와 C구역으로 가라는 포스트잇을 읽었습니다. 그래서 C구역으로 갔습니다.  이제야 C구역에서 바나나 박스를 찾았습니다. 그런데 포스트잇 에는 null이라고 적혀져 있습니다. 이는 마지막 구역이라는 뜻입니다. 그런 의미로 마지막을 tail이라고 부릅니다.  이 처럼 특정 데이터를 찾을때 데이터(과일) 옆의 주소(포스트잇)를 따라가는 것을 Linked List이라고 합니다. 순차적으로 찾을수 있지만 문제는 100개의 구역이 있으면 뛰어다니면서 찾아다니기가 어렵다는 것입니다. 이렇기 때문에 여러가지 자료구조 방법이 있습니다.  다음글 : Hash Table구조와 원리

Stack(쌓다) 구조 및 원리

이미지
 안녕하세요. 알렉스 입니다. 이번에는 Stack의 구조와 사용 방법에 대해서 알아 보겠습니다.  일단 상자가 있다고 합시다. 이제 이 상자안에 과일을 넣을 것입니다. 과일은 박스에 담겨있고 박스의 가로세로 높이는 상자의 가로세로 높이와 같습니다. (가장 아래의 과일 상자를 끄낼려면 그 위에 있는 상자를 모두 빼야 합니다.)  첫번째 상자로 사과를 넣습니다. 이때 컴퓨터 용어로 push라고 합니다. 즉 상자에 추가한다는 뜻입니다. 위 사진에서는 사과 상자를 추가하는 것입니다.  두번째는 바나나 상자 입니다. 바나나 상자는 사과 상자 위쪽에 놓여져 있습니다.  세번째와 네번째는 각각 토마토와 망고 입니다.   이로써 상자에는 사과, 바나나, 토마토, 망고 박스가 들어있습니다. 이때 상자에서 과일 박스를 뺄때 가장먼저 잡히는 상자는 망고 입니다.  위 사진처럼 망고 상자를 빼는 행위를 pop라고 합니다. 저는 사과를 좋아하는데 사과박스를 빼기 위해서는 그 위의 바나나, 토마토, 망고박스를 빼야 합니다.  사과 박스 위쪽의 모든 박스를 뺀 후에 사과상자를 뺄수가 있습니다. 이처럼 Stack는 가장 먼저 들어간 Element가 가장 나중에 나오는 구조 입니다. 즉 먼저 들어간 것은 다른 모든 Elements들이 나갈때까지 제거할수 없는 경우를 말합니다.  다음글