전체 글

전체 글

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - AWS Route53과 DNS의 동작 원리 & 실습

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - AWS Route53과 DNS의 동작 원리 & 실습

    도메인 등록 절차 저희는 만약에 fast-devops.com이라는 도메인을 어떠한 ip와 매칭시켜 주고 싶다고 해 봅시다. 그럼 우리는 궁극적으로 등록소 Top level domain에다가 각각의 정보를 매칭시켜주는 과정을 해야합니다. 그리고 이러한 과정을 도와주는 것이 등록 대행자라는 것입니다. 여기서 Route53은 등록 대행자입니다. 결국에는 DNS server에 ip와 도메인을 저장하면 이는 궁극적으로 등록소의 저장소에도 저장되게 됩니다. 만약 fast-devops.com을 들어갔다고 하면, 등록소 서버에서 이와 링크되어 있는 ip를 찾고, ICANN에서 client로 이를 반환해주는 원리라고 보시면 됩니다. aws의 Route53은 등록대행을 해주는 역할을 하고, DNS 서버를 구추고해 주는 역..

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - ALB Rule설정하여 인스턴스 분기하기

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - ALB Rule설정하여 인스턴스 분기하기

    ALB Rule 이제 만약에 우리가 만든 서비스가 마이크로서비스라고 가정해 봅시다. 그럼 /order따로 /delivery따로 구동될 것입니다. 당연히 이에 따른 대상 그룹도 2개일 것이고 각각의 대상그룹 안에 여러개의 인스턴스가 존재하게 될 것입니다. 저희는 그리고 각 url마다 매칭시켜줘야 하는 대상그룹이 다를 것입니다. ALB가 /order -> TG1 /delivery -> TG2로 가게해라 라는걸 알기 위해서 작성되야 하는 것이 ALB Rule입니다. Sticky Session 또한 Sticky Session에 대해서 설명해 보도록 하겠습니다. 만약에 TG가 하나만 있다고 해 봅시다. 세션은 쿠키 형태로 id값만 저장해고 계속 들어올 때마다 자동 로그인이 되게끔 하는 그런 기능?이라고 보시면 되..

    2022 - 1 - 1

    흠 이번에는 심심하고 성적도 나오고 해서 뭔가 2022학년 도 1학기가 정식으로 마무리 된거 같아 뭔가 후련하기도 하고, 앞으로의 계획을 세우려니까 너무 막막하다. 사실 공부도 공분데, 군대 문제가 가장 크다. 그냥 죽을떄까지 뻐기는 방법이 있지 않을까.. ㅋㅋㅋ. 개소리였고 하.. 그냥 막막하기만 하다. 공부도 하고 싶고, 놀고싶고, 아직 못해본게 너무 많은데 수용소로 끌려가는 뭔가 시한부 느낌이다. 그리고 1학기 시작 전에 세웠던 목표인 과탑에 성공한거 같아 너무 뿌듯하다. 사실 아직 과목 하나가 확정이 안나서 불안하지만.. 고등학생때보다 열심히 공부한 나에게 칭찬 박수 보내주고 싶다. 예전부터 느끼는거지만 나는 계획은 세우지 않지만 의지가 쌔서 뭐든지 다 해내는거 같다. 요즘에도 꼭 이루고 싶은 목..

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - ALB에 인스턴스 연결하여 웹서비스 실행하기

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - ALB에 인스턴스 연결하여 웹서비스 실행하기

    타겟그룹 생성 일단 로드벨런서를 EC2인스턴스에 적용하기 전에 먼저 타겟그룹을 설정해 줘야 합니다. 이는 마이크로 서비스에서 중요하게 됩니다. order그룹 1개, delivery그룹 1개, boss그룹 1개를 각각 만든다음에 그 안에 서버를 여러개 만들어서 동작하게 할 수 있습니다. 하지만 아직 모놀리식이므로 1개만 만들어도 충분합니다. 먼저 Instance를 하나 만듭니다. 그리고 tg1이라는 타겟그룹을 만듭니다. 또한, PORT를 설정하는 것은 로드벨런서에게 트래픽이 왔다고 해 봅시다. 그럼 이 트래픽을 서버의 어떤 포트로 보내줄 것이냐를 결정해 주느냐 입니다. 여기서는 당연히 8000번 포트에 서버를 실행시키고 있고 인바운드 규칙도 편집해 주었으므로 HTTP 8000로 적어주는 것이 맞습니다. 그..

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 로드밸런서 (L4, L7)의 동작원리와 AWS ELB

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 로드밸런서 (L4, L7)의 동작원리와 AWS ELB

    로드 밸런싱 만약 앱의 client가 늘어나게 되고, 서버가 하나라고 한다면, 서버는 이를 감당하지 못할 수도 있습니다. 이를 해결하기 위해서는 앞에서도 말했지만, 서버를 여러개로 늘릴 수 있습니다. 이러한 방식의 문제는 서버가 필요로 하는 용량이 너무 커졌을 떄, 이를 기술적으로 해결하기가 어렵다는 것입니다. 그리고 비용문제가 있을 수도 있습니다. traffic이 늘어나면 이에 대한 비용이 기하 급수적으로 늘어나기 때문에 비용 측면에서는 좋지 않습니다. 그래서 저희는 이러한 해결방안을 생각할 수 있습니다. 같은 성능의 서버를 여러개 만들고, 이에 대해 트래픽을 나누어 줄 수 잇는 어떠한 것을 활용하면 되겠다 라고요. 이를 위한 것이 AWS의 Elastic Load Balancer(ELB)입니다. 이 L..

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Django 결과를 EC2에 배포하기

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Django 결과를 EC2에 배포하기

    ssh-keygen 우선 ssh-keygen에 대해서 알아보자 SSH를 이용하여 서버에 접속하는 방법은 다양하게 존재합니다. 그 중 가장 단순한 방법은 비밀번호로 접속하는 것입니다. 하지만 비밀번호의 문제점은 보안이 취약하다는 점입니다. 물론 비밀번호도 보안되어서 전달되지만, brute force에 의해서 해킹을 당하는 경우가 종종있다고 합니다. 그에 반해 Key를 이용한 ssh접속은 보안적으로 믿을만하다고 증명된 바 있습니다. key는 private key와 public key의 쌍으로 이뤄져 있고 이를 비대칭 키라고 부릅니다. private key는 client에서 안전하게 보관되어야 하는 key이고 public key는 server(EC2등)에 공유되는 key를 말하게 됩니다. 밑에서 다시 한번 설..

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 데이터베이스 구축 (AWS RDS)

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - 데이터베이스 구축 (AWS RDS)

    AWS RDS 연결 이제 본격적으로 aws에서 rds를 만들고 이를 우리가 만든 앱과 연결해 보도록 하겠습니다. 우선 기본적으로 초기 데이터베이스 이름을 project1으로 지정해 주었습니다. 그리고 프리티어 정책에 따라서 mysql 데이터베이스를 하나 구축했습니다. 우선 생성된 데이터베이스의 default sg의 인바운드 규칙을 3306번 포트에 대해 열어주고 기존에 만들어진 model을 만든 aws rds에 migrate해 보겠습니디. $python manage.py migrate 그리고 runserver를 통해 저장되어 있는 값들을 보면 아무것도 저장되어 있지 않습니다. 기존의 db의 틀만 migrate한 것이기 때문에, 정상입니다. 그리고 aws rds의 모니터를 통해 잘 작동하는지 확인하면 정상..

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Delivery 백엔드 개발

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Delivery 백엔드 개발

    우선 devlivery app을 추가하도록 하겠습니다. $python manage.py startapp delivery /fastcampus/fastcampus/settings.py ... INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'order', 'boss', 'settings', 'rest_framework', ] ... /fastcampus/fastcampus/urls.py from django.contrib import ..

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Boss 백엔드 개발 2

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Boss 백엔드 개발 2

    이제 boss에서 각 가게마다의 주문내열을 확인하고 예상 소요시간을 볼 수 있게끔 바꾸어 보도록 하겠습니다. 우선 url을 2개로 나누어야 합니다. 시간을 입력할 수 있는 각 가게마다의 url인 orders//, 그리고 여기에서 post요청을 timeinput/으로 보내버리면 됩니다. 바로 코드로 봅시다. /fastcampus/boss/views.py from django.utils import timezone from django.shortcuts import render from order.models import Shop, Menu, Order, Orderfood from order.serializer import ShopSerializer, MenuSerializer from django.http..

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Boss 백엔드 개발 1

    [ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Boss 백엔드 개발 1

    이제 django 프로젝트에 새로운 앱을 추가해 주겠습니다. $python manage.py startapp boss Boss는 사장님입니다. 사장님이 이 앱에서 해야할 일은 1가지 밖에 없습니다. 이전에 estimated_time즉 예상 소요시간을 조절하는 것 밖에 없습니다. 이를 하기 위해 일단 이를 위한 셋팅을 진행해 보도록 하겠습니다. /fastcampus/fastcampus/settings.py ... INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib..