[AWS] Route53
·
Minding's Programming/AWS
Route53Route53은 AWS의 DNS(도메인 이름 시스템) 웹 서비스로, 가용성과 확장성이 뛰어나다. 도메인 등록, DNS 라우팅, 상태 확인을 조합해 실행할 수 있다. Route53은 publice host zone과 private host zone에서 사용할 수 있는 도메인을 나눠서 제공하고 있다. Route53의 기능은 DNS(네임서버) + 모니터링 + L4 + GSLB의 조합이라고 할 수 있다. DNS를 찾아가는 흐름은 위 그림과 같다.사용자특정 도메인 요청DNS root name server(글로벌)에서 해당 도메인 탐색Name server for .com TLD (지역/리전)에서 해당 도메인 탐색Route 53 name server(로컬)에서 해당 도메인 검색해당 도메인에 등록된 IP ..
[AWS] RDS, DocumentDB, DynamoDB
·
Minding's Programming/AWS
RDSAWS에서 지원하는 RDB로, 기본적인 DB 형태를 가지고 있다. DB의 인스턴스는 클라우드에서 실행하는 격리된 환경이며, 여러 사용자가 만든 DB가 포함될 수 있다. 액세스할 때는 독립 실행형 DB에 엑세스할 때 사용하는 도구 및 애플리케이션을 사용한다. 특징AWS 명령줄 도구, Amazon RDS API 작업 또는 AWS Management Console을 사용해 간단히 DB 인스턴스 제작 및 수정 가능직접 시스템 로그인 불가능서버리스 시스템이 아님RDS는 main이 되는 Primary와 데이터 손실 방지용 StandBy 2개로 구성이 되어 있으며, 그 내부에는 인스턴스(서버)와 실질적으로 데이터를 저장하는 EBS로 이루어져 있다. RDS 이용해보기AWS에 로그인 후 RDS를 검색해 대시보드로 ..
[Playwright/Python] 비동기 처리가 가능한 웹 스크래핑 라이브러리, Playwright
·
Minding's Programming/Crawling
프로그래머스 데이터 엔지니어링 데브코스 프로젝트 중 동적 웹 페이지에서 브라우저 조작 및 스크래핑으로 데이터를 수집해야하는 작업이 있었다. 처음에는 기존에 사용하던 Selenium을 사용했지만, 수집할 데이터가 다수였던 만큼 시간이 너무 많이 소요된다는 단점이 있었다. 시간 비용 소모 문제를 해결하기 위해 Selenium을 사용하는 함수를 비동기 프로그래밍 처리하려고 했지만, Selenium은 기본적으로 비동기 처리를 지원하지 않기 때문에 다소 복잡한 과정을 거쳐야 한다.(driver를 가져오는 함수는 따로 작성하고 sync to async를 통해 처리해줘야 한다던지... 등등) Selenium의 비동기 처리 문제를 해결하던 중, 우연히 검색을 통해 비동기 프로그래밍을 지원하는 브라우저 제어 라이브러리가..
[AWS/Elastic Beanstalk] Elastic Beanstalk
·
Minding's Programming/AWS
Elastic Beanstalk는 애플리케이션을 신속하게 구성하고 관리할 수 있는 AWS의 서비스다. 관리 복잡성을 줄일 수 있다는 장점이 있으며, 애플리케이션을 업로드하기만 하면 용량 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링 세부 정보를 자동으로 처리한다. Go, Java, .NET, PHP, Python 등의 애플리케이션을 지원한다. 애플리케이션을 배포할 때, Elastice Beanstalk가 선택된 지원 가능 플랫폼 버전을 구축하고, Amazon EC2 등의 AWS 리소스를 하나 이상 프로비저닝해 애플리케이션을 실행한다.  Elastic Beanstalk 생성Elastic Beanstalk > 애플리케이션 생성 으로 진입한다. 1단계 화면에서는 환경 티어, 정보, 플랫폼(언어)..
[AWS/EC2] EC2로 서버 생성 및 연결하는 방법
·
Minding's Programming/AWS
키 페어키 페어는 AWS 인스턴스(서버)에 로그인할 때 사용하는 정보로, AWS에 저장되는 Public Key와 사용자가 개인 보관하는 Private Key의 쌍으로 이뤄진다. 경로: EC2 > 키 페어 > 키 페어 생성프라이빗 키 파일 형식은 두 가지인데, 각자 사용하는 OS 환경에 따라 다르게 선택한다..pem: Mac, Linux (필자 선택).ppk: Windows이후 '키 페어 생성'을 클릭하면, 선택한 프라이빗 키 형식의 파일을 다운로드 받을 수 있다.이 키는 개인이 관리하는 key이므로, 절대 잃어버리지 않도록 유의한다. 인스턴스 생성본격적으로 가상 서버(인스턴스)를 생성해보자.경로: EC2 > 인스턴스 생성서버 이름 및 OS, AMI등을 선택할 수 있다. AMI는 운영체제 및 애플리케이션 ..
[Django] Testing(Testing Serializer, Testing View)
·
Minding's Programming/Django
TestingTesting은 각 기능의 테스트를 일일히 하는 것이 아닌, 주요 기능들을 컴퓨터 스스로 할 수 있도록 자동화하는 것을 뜻한다. 개발 시간을 줄여주고, 문제를 발견 및 예방하는데 도움이 된다. 테스트 코드로 인해 코드도 간결해지고, 협업에 도움이 된다는 장점도 있다. polls_api 폴더로 이동해보자. 생성한 앱에는 자동으로 test.py 파일이 존재하는 것을 볼 수 있다.이 test.py 파일에 testing 코드를 넣고 파일을 실행해 테스트를 자동화할 수 있다. Testing Serializer먼저 시리얼라이저에 대한 테스트 코드를 작성해보자.from django.test import TestCasefrom polls_api.serializers import QuestionSeriali..
[Django] 투표 기능 구현하기
·
Minding's Programming/Django
1인 1투표 기능 구현하기Vote 모델 만들기이전에 투표 기능을 구현할 때([Django] 폼(Forms))는 User의 정보를 따로 받지않아 1명의 User가 여러 번 투표를 할 수 있었다. 이번에는 RESTful API framework를 이용해 계정 정보를 저장하는 모델을 따로 만들어 1개의 계정이 여러 번 투표를 할 수 없도록 하려고 한다. 먼저, 투표한 질문, 답변, 계정 정보를 담을 테이블을 생성하기 위해 모델을 만들어준다.# mysite/polls/models.pyfrom django.contrib.auth.models import Userclass Vote(models.Model): # 투표한 질문 question = models.ForeignKey(Question, on_del..
[Django] RelatedField
·
Minding's Programming/Django
RelatedField1. PrimaryKeyRelatedField 현재 User List를 살펴보면, 각 유저의 question 필드에 질문 레코드의 id값이 표시되는 것을 확인할 수 있다. 이것은 serializers.py에서 UserSerializer를 설정할 때 PrimaryKeyRelatedField를 사용했기 때문이다.# mysite/polls_api/serializers.pyclass UserSerializer(serializers.ModelSerializer): # questions 필드를 명시하는 이유: User 모델과 Question 모델 간의 관계를 보여주기 위함 questions = serializers.PrimaryKeyRelatedField(many=True, quer..