AWS_실습

Haks.·2024년 12월 17일
0

How to use

목록 보기
6/32

AWS 실습


🧑‍💻 Subnet 연결


# 퍼블릭 서브넷에 인터넷 게이트웨이를 연결하는 라우트 형성
서브넷 -> 인터넷 게이트웨이 -> 퍼블릭 라우트 생성 -> 해당 라우트 서브넷 연결 -> 라우팅 ,라우팅 편집 
-> 라우팅추가 -> 0.0.0.0/0 (모든트래픽에 허용) -> 인터넷 게이트웨이 -> 해당 만든것 
-> 서브넷 연결(길을 만들엇으니 서브넷으로 연결) ->  위 나랑 연결되 있는것 ,아래 놀고 있는 것 (위가 중요) 서브넷 연결편집(위) 
-> 퍼블릭 연결 ->  이제 프라이빗 연결할 라우트 생성 -> 프라이빗 연결 -> vpc 로가서 id 눌러서 리소스맵이 잘 연결되있는지 확인 
-> 마우스 올렸을때 맞게 연결되어있으면 된것 -> 아무나 들어오면안된다 
-> 방화벽 설정 (security group),(NACL,Network Access Control List),(WAF),(ANF)

# 보안그룹 설정 EC2
-> ec2 인스턴스 생성 -> 퍼블릭 -> 아마존 -> t2.micro -> 키페어 -> 네트워크 편집 -> vpc 선택 
-> 서브넷 퍼블릭 선택a -> **퍼블릭 ip 자동할당 enable** -> 보안그룹 생성 -> 이름 -> 일단시작(ssh,http 이런거안건들고) 
-> security group -> id -> 인바운드 규칙 편집 -> 소스 내ip -> 규칙 추가 -> http (anywhere) ->save

# 만든 인스턴스가 외부 인터넷과 연결이 되어 있는지 확인
만든 인스턴스 id -> 연결 -> ssh 클라이언트 -> 터미널 열어서 pem파일이 들어있는 곳으로 이동 cd 
-> find *.pem (잇으면됨 뜸) ->chmod 400 “be-eight-key.pem” 엔터 
-> ssh 클라이언트 예 에 젤밑에 있는 ssh -i 옆에 명령어 복사  ,터미널에 붙여놓고 엔터 
-> 여기까지가 내가 만든 퍼블릭 a 서브넷을 인터넷에 연결하게 만든것
-> 터미널에 curl https://google.com  을 치면 html 이 날라오면 연결된것

# 프라이빗 서브넷에 NAT 을 연동시켜서 외부로 나가는 것만 가능하게
인스턴스 로 돌아와서 -> ec2 private 를 만들거임 -> 똑같이 하고 네트워크 편집에서 privat a 선택 -> auto assign 안함
-> 이름 -> 설명 -> type 내 ip -> custom icmp -ipv4 -> 내부에서 잘되는지 보기위해서 
-> vpc 내부 주소값 보기위해 소스값 10.0.0.0/16 -> id 클릭 -> NAT gateway를 퍼블릭에 배포를 시켜서
프라이빗 경로에 0.0.0.0/0 즉 인터넷으로 나가는 경로가 존재할시 NAT로 가라 경로르잡아줌 -> 나가는 것만 가능

🧑‍💻 load balancer


# 설정해놓으 EC2 만들어주는 템플릿 설정
ec2 -> 런치 템플릿 -> create -> 이름, 설명 -> application and os images -> amzon 선택리눅스
-> 인스턴스 타입 ,t2.micro -> key pair -> subnet,pup a sub -> sercurit group,be-pupseg
-> advanced network configuration -> 2행 3열 auto assign,en able
-> advanced details, 젤밑에 코드 복사 붙여넣기 script.sh 안에 코드 붙여넣기

# 포트 번호 추가를 안해서 잘못 주소로 들어가지 못하는거 해결 사례
템플릿 -> id -> 템플릿 실행 -> 인스턴스에서 똑같이 만들어 졌나 확인
-> 퍼블릭 복사 후 -> http://52.79.156.199:8000 -> 안되면 security group 가서 왜안들어가 지는지 확인 -> edit  inbound 
-> 코드에 8000 포트를 써서 못들어 오는거엿음 , custom tcp, 8000,anywhere 0.0.0.0/0 추가 
-> http://52.79.156.199:8000 다시하니 성공 -> 확인 -> 수정해보자 -> 현재 pulic a 에만 있으니까

# 2번째 버젼
-> 템플릿 -> modify -> version2 -> network setting -> 
dont include in launch template(서브넷 골고루 줘야 하기에 변경해줌) -> enable(확인) -> 만들기

# 타겟그룹 만들기 (죽은서버인지 확인하는 로드밸런서)
Load balancers -> target group(카테고리) 먼저 만들어야댐 -> create ->vpc체크-> instance
-> 이름:be-eight-tg -> 포트 우리가설정한 8000 -> 트래픽이 죽어있으면 보내면 안됨 -> 그래서 -> 헬스체크란 코드를 만들어 놓았음
-> 200을 입력값을 넣는데 그값이 되돌아오지 않으면 서버가 정상적이지 않은 서버인것 을 확인 
-> advanced health cehck -> 200 대부분 약속으로 200을 보낼텐데 그럼 우리서버는 다 죽어있다고 생각하게됨 -> 약속을 잘 지켜서 하는것이 중요 -> 아직 로드밸런서 만들지 않아서 낫인 유즈

# 로드 밸런서 생성 
load balancer(카테고리) -> create -> application load balance create -> be-eight-alb
-> scheme(용도) -> internet-facing -> vpc 선택 -> 서브넷 둘다 선택 퍼블릭 선택 필수 ->
-> security group -> default 끄기 -> 퍼블릭 security group 선택 -> listers and routing -> 들어오는것을 어디로 내보낼 거냐
-> 80번 포트를 be-eight-tg 로 보내는 것 , 다른포트가 필요하면 add listener하면됨 -> Review 로 확인 -> create load balancer
-> 이제 application load balancer 로접근하면 만든 ec2 로 접근이 될거임 -> 밑에 resource map - new 에 보면  경로가 뜸
-> DNS name 복사 -> 새창에 http://붙여넣기 

# Auto scaling 생성

autocaling (카테고리) -> 주황색 생성  choose lauch template -> be-eight-asg
-> 만든 템플릿 -> latest(최신버전을 쓰겟다)-> next -> vpc 선택 -> pub a,c 선택 ->next
-> attach to an existing load balancer -> 밑에서 선택 -> Health check, turn on elatsic ~~ 체크 -> next -> Desired capacity, 2 -> min : 2 max : 4
->Target tracking scaling policy 체크, target value :20,  instance warmup : 100 ->next * 3 -> 리뷰 -> create auto scaling 클릭 
-> 인스턴스 눌려 보면 생기고 잇을거임 -> a 와 c존에 생기고 잇을거임 -> load balancer 선택
-> resource map 보면 3개가 붙어 있고 healthy 상태일 거임


# 큰 EC2 생성 
-> instance -> launch instanace -> be-eight-loadgenerator -> m5.8xlarge
-> networksetting vpc선택 -> subnet pup a 선택 -> auto sign 가능 -> select security-> pub - sg 선택 
-> advanced details 젤밑 코드 복사 -> be load generator id 접속 -> connect 
-> sshcilent, ssh 복사 -> 터미널 -> .pem 이 있는 곳으로 이동 cd -> 복사한 코드 붙여넣기 ,yes 
-> sudo yum update -y ->sudo yum install python3 pip -y (파이썬설치) -> pip3 install locust
-> vi locustfile.py0 -> i,아까코드 붙,esc->:->wq  -> 로드밸런서 접속 -> dbs 네임 복사후 코드에 교체 
-> locust -f locustfile.py --headless --host http://be-eight-alb-923018155.ap-northeast-2.elb.amazonaws.com -u 100000 -r 100 (터미널에 복사)  
-> instance -> 스케일링 늘어날거임 -> load balancer -> resourec map 보면 변동사항 나타남
-> 터미널 -> 컨트롤 c 종료 후 exit 입력 -> 맵보면 죽은애도잇고 만들어지고잇는애도잇고 다양하게 나타남

# 삭제 과정
-> 인스턴스 삭제 오토스케일리 삭제 로드밸런서 삭제 타겟그룹 삭제 런치탬플릿 삭제

🧑‍💻 EFS


  1. vpc 및 두개의 퍼블릿 서버 구축
  2. ec2 및 efs 에 대한 보안 그룹 생성
  3. elastic file system 만들기
  4. 첫 번째 EC2 인스턴스 생성 및 EFS 드라이브 마운트
  5. instance connect 를 사용하여 ec2 에 연결
  6. efs 드라이브에 파일 생성
  7. 두번째 인스턴스의 efs 마운트 시연
  8. clean up
# 실습1 sotarge가 잘생성됬나, 부족하면 더 만들어 붙이는 실습까지, EC2 -> EBS 연결

EC2 -> 인스턴스 -> be-eight-pup-ec2 -> 키페어 -> vpc,subnet pup a, enable,
-> select, pup sg 선택 -> launch -> id -> connect -> ssh client -> 젤밑 복사후
-> 터미널 -> key.pem 위치 찾아서 이동 후  -> 붙여넣기 -> df -h (스토리지 크기보는 명령)
-> dev/xvda1 ~ -> lsblk -o +SERIAL (어떻게 쓰고있는지도 나옴) -> instance
-> Elastic Block Store, Volumes 접속 -> inuse,attach 확인 -> create volume
-> zone 같은거 유의(같아야 붙일수있음 ) -> create volume -> availabe -> 붙여줘야지
-> 선택, 액션 attach volume -> instance 골라 , 이름 dev/sdb 골라 -> 끝
-> 터미널로 가서 다시 확인 -> df -h, lsblk -o +SERIAL (추가된거 확인)
# 떼기
-> 붙인거 선택(volume) -> actions -> detach -> 다햇으면 delete


# 실습 2 EC2 만들때 volume 늘려서 만들어보는 실습
instance, launch -> be-eight-pub-second-ec2(한라인에 같은 네이밍 컨밴션을 쓰게하자)
-> key pair -> 위와 동일시 생성 -> storge -> add new volume 8,16,32 -> launch
-> id -> 하단 storage -> delete 시 데이터는 삭제 안되게 하기위해 한번에 다삭제 안되는거임
-> connect -> 하단 복사 -> 터미널 -> lsblk -o +SERIAL -> 잘붙어잇나 확인 8,16,32
-> ec2 인스턴스 둘다 삭제 -> 새로고침 누르다보면 available 뜨면 전부 삭제 


# 실습 3 S3 생성 및 외부와 연결시키는 실습, role 생성, EC2 -> S3

role : aws 에 권한을 주는것이 role
json 버전이 기본적으로 권한을 설명해줌 
S3 -> create bucket -> be-eight-s3-kbh(이름 중복 안됨) -> 막아야 접근이 안됨 저장소에
-> 생성 -> id -> 파일하나 올려보고 -> 클로스 -> 방금 올린 파일 -> copy URL -> 못들어감
-> EC2 검색 -> 인스턴스 생성 -> be-eight-s3access-ec2 -> 위와 같이 생성 -> pub
-> 선택 -> action -> security -> modify IAM role -> create role -> AWS servi
-> use case, EC2 -> Next -> AmazonS3FullAccess 검색 -> Next 
-> be-eight-s3FullAccess-ec2 -> modfiy iamrole 에서 추가 -> 연결해서 접속(터미널)
-> aws s3 ls (터미널에 입력 버킷리스트 나옴) -> aws s3 ls s3://be-eight-s3-kbh
-> aws s3 cp s3://be-eight-s3-kbh/{파일명} .png s3.script (복사)(다운) 
-> vi s3.script -> exit 
-> 삭제 ec2 -> s3 삭제 -> delete 안비어있다고 나옴 empty bucket 누르고 -> 나가서 삭제

EBS = Storage type : Block storage , Attachment Type : DAS
S3  = Storage type : Object storage, Attachment Type : SAN
S3  = Storage type : File storage,   Attachment Type : NAS


# 실습 4 File storage 만드는 것 EFS

EC2 storage group -> pub id 클릭 -> inbound 확인 -> create security group
-> be-eight-efs-sg ,Security group for efs during Backend 8th -> vpc
-> inbound edit -> Type: NFS -> create ->ec2 에서 들오게 해줄수 잇는게 없어서(efs)
-> 추가해줘야함 -> inbound edit -> add NFS -> efs 소스 선택 -> 들어온거 확인가능
-> EFS 접속 -> create file system -> be-eight-efs -> 밑 선택 -> customize
-> Archive,None -> transition into standard, on first access 
-> Encryption 체크박스 해제 -> perfomance, bursting -> next
-> security group 디폴트 제거, efs-sg 선택 -> 서브넷 둘다 퍼블릭 -> 확인후 create
-> 새창, EC2 -> create -> be-eight-efs1-ec2 -> 동일하게 생성 -> pub a
-> select, pub sg -> 0*File system, edit -> efs -> add shared file 
-> 자동으로 찍힘 만든거 하나밖에 없어서 -> 이미 보안그룹 만들어서 첫번째 체크박스 해제
-> launch instance -> instance, 있나 확인 -> 생성 ->be-eight-efs2-ec2
-> 동일 하게 생성 -> pub c -> pub sg -> file system edit -> 아까랑 동일, 생성
-> efs1 체크 들어가기 ssh-client -> 터미널 -> cd /mnt/efs/fs1 (들어온거)
-> sudo vi testfile.txt (만들고) -> i -> hello world ,esc,:,wq 
-> cat testfile.txt (파일내용보기) -> exit -> efs 2번 -> connect ->ssh
-> cd /mnt/efs/fs1 -> ls
-> ec2 삭제 efs 삭제 


# 실습 5 Database, Serverless app 만들어 보기, DynamoDB
Serverless 쓴만큼 돈나옴 만들고 아무것도 안하면 돈안나옴 

Dynamo DB -> creat table -> http-crud-tutorial-items -> parition key,id 
-> explore items 확인 -> lambda->createfunction->http-crud-tutorial-function
-> python 3.13 -> change default execution role -> create aws policy temp
-> http-crud-tutorial-role -> simple microservice permissons 
-> lambdaPython4DynamoDB.py 파일 열기 -> fucntion 만드거에 id 값타고 들어가서 
-> 코드 붙여넣기 있떤거 지우고 -> 왼쪽 deploy(배포) 클릭
-> API(application program interface) gateway 검색 -> http api build
-> http-crud-tutorial-api -> next next next review -> create -> GET 선택
-> /items -> create -> /items/{id},create -> Put -> /items,create 
-> Delete, /items/{id} , create -> integrations(카테고리) 선택 -> get
-> create an integration 클릭 -> target,lamda funciton -> lambda fucniton
-> create awslambda 라고 초록색으로 떠야함 -> 나머지 choose 에 눌러서 밑에꺼 고르면됨
-> 그러면 aws lambda 4개 일거임 -> 카테고리 가운데 api : 떠잇는거 클릭 ->invoke url 복
-> 복사후 다른곳에 저장해놈 -> curl -x(어떤명령어로 x 를 넣을거냐) -> 터미널 curl 복붙
-> DynamoDB -> tables -> explore items -> 123 나오는거 확인 -> 써봣으니 불러보기
-> curl #불러보기  -> items 만보려면 /123 -> 빈리스트 나오나 확인 다시 해보기 
-> 테이블 삭제 백업본 선택하면 안됨 lambda 삭제 api 삭제 iam role(httpcrud,be) 삭제
 
https://ez0oorn3va.execute-api.ap-northeast-2.amazonaws.com (invoke url)

# 생성
curl -X "PUT" -H "Content-Type: application/json" -d "{\"id\": \"123\", \"price\": 12345, \"name\": \"myitem\"}" https://ez0oorn3va.execute-api.ap-northeast-2.amazonaws.com/items
# 불러보기
curl https://ez0oorn3va.execute-api.ap-northeast-2.amazonaws.com/items
# 지워보기 
curl -X "DELETE" https://ez0oorn3va.execute-api.ap-northeast-2.amazonaws.com/items/123 ( 123 지운거임)

🧑‍💻 RDS,mySQL with window,linux


# 실습 윈도우 서버에서 mysql 로 보내기  
# 리눅스 서버에서 mysql 로 보내기  파이썬 코드에서 db 변경하는것

# windows 서버에서 mysql 로 보내는 실습

# 1. DB 생성 
n.viriginia 서버 -> ec2 -> key pair 생성 -> sql-immersion -> .pem이동
-> cloudformation 검색 -> create stack -> crft.yaml 을 받아서 이걸 
복사해 줄 거니 -> upload a template file, choose file, 받은거 올리기
-> next -> sqlimmersion-stack -> 비번 : Amazon1! -> ipaAccess :
203.0.113.1/32 -> latestAmild :/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-SQL_2017_Express 
-> key 만든거 선택 -> 젤밑에  체크박스만 클릭 -> submit -> info( 기본 상태 )
-> events, 리소스를 게속 만들고 있는중 -> resources 에서 만들어진거 볼수 있음

# 2. RDS 사용
RDS 검색 -> Databse(카테고리) -> create -> microsoft sql server
-> SQL Server Enterprise Edition 선택 -> SQL Server 2019 15.00.4198.2.v1 
-> identifier :sqlserver-rdssql -> Credentials Settings -> self man
-> 비번 : Amazon1! (둘다) -> db.m5.xlarge (젤작은거 선택) -> storag.tpye
-> Provisioned IOPS SSD(io1) -> Additional stoarge configuration
-> Availability & durability, No -> connectivity -> vpc 만든거 선택
-> security group 디폴트 제거 -> stack-SQLSecGroup 선택 -> zone a
-> Certificate authority - optional, default -> create database
-> id 클릭 -> 밑에꺼 후 ->endpoint 뜬거 확인 -> rds 에 접속하기 위한 입구 복사
-> 만든 윈도우 드가서 돋보기 클릭 -> ssms 검색 -> 클릭 -> authentication선택
-> sql server autenticaion 선택 -> 서버네임에 복사한거 붙여넣기 안되면 수기작성
-> -> 로그인 : admin 비번 :Amazon1! -> DB 생성 -> 그전에 탭 connect to in
-> 들어가서 Session manager, connect, powershell ->
# GUI
# 
EC2 instances -> windows 확인, AMI name -> connect -> rdp client
-> get password -> .pem 올리기 그리고 확인 -> password 복사 
-> 위 -> connect using fleet manger 클릭 -> feelt manager remote클릭
-> 패스워드에 복사한거 붙여 넣기 -> 이름 :Administrator -> connect 
-> 노스버지니아 서버의 윈도우스에 원격으로 접속 성공 -> RDS 탭 돌아가서

# 리눅스에서 보는 법 RDS

RDS -> create database -> MySQL 선택 -> Availability and durability, Single DB instance선택
-> identifier :mysql-rds -> self managed체크 -> Amazon1!,(둘다)
-> m5large(젤위 젤산거) -> Availability and durability, Single DB instance선택 
-> connectivit -> VPC 선택 -> create new 선택 -> new vpc n:rds-sg
-> create -> 콘솔 새창 -> ec2 -> lanunch instances ->
-> bastion-ubuntu-ec2 ,이름 -> newtrok edit -> Public1(서브넷)
-> select sg -> stack-publicsecgroup 선택 -> launch 
-> 탭 RDS -> mysql-rds id 클릭 -> 3306포트 쓰는거 인지 -> instsnce 탭
-> 카테고리 security group 접속 -> 이름중에 pupsecgroup id 클릭 
-> edit inboud 룰 3306 포트 들어오게 해야하니까 -> ssh,내 ip
-> secruity group 다시 -> 이름 rds sg id 클릭 -> eidt inbound
-> add -> type: mysql/aurora -> 오른쪽 pupsecgroup 찾아서 선택 
-> instances -> bastion id -> connect -> ssh-client 
-> 터미널 -> pem 저장경로로 이동 (find *.pem 으로 최종확인) 
-> chomd 를 권한 설정해야됨 3번째꺼 복사 터미널에 복붙 -> 젤밑 ssh 복,터미널 붙
-> sudo apt-get update (라이브러리 업데이트) 
-> sudo apt-get install mysql-server  # 우분투에서 mysql 다운받은것
-> sudo mysql (설치됫나 확인) -> exit
-> RDS 탭 -> 엔드포인트 저장 -> 터미널 
-> sudo mysql -u admin -p -h (관리자 권한 실행 유저 어드민 비번 : 호스트 :)
호스트에 엔드포인터 저거 입력 h 엔드포인트 -> 비번 : Amazon1!, mysql로 뜨면 된것
-> SHOW DATABASES; -> CREATE DATABASE be_eight; -> USE be_eight;
-> CREATE TABLE student(
    studentId INT PRIMARY KEY,
    studentName VARCHAR(20));
-> INSERT INTO student (studentId, studentName)
    VALUES (1001, 'Dongyoon');
-> INSERT INTO student (studentId, studentName)
    VALUES (1002, 'Byunghak');
-> SELECT * FROM student -> exit
-> 터미널
sudo apt update
sudo apt install python3 python3-pip
sudo apt install python3-mysql.connector
->
python3 --version
python3 -c "import mysql.connector; print(mysql.connector.__version__)"  2줄 잘나오면 잘된거 8.0머시기
-> mysqplpython.py 내용 복사
-> vi mysqlPython.py (파일 생성, 및 입력) -> i , 붙여넣기  -> esc + :wq
-> cat mysqlPython.py (파일 내용 확인)
-> python3 mysqlPython.py -> 밑에 엔드포인트 붙여넣기 -> 연결됨!!
-> 1 -> shinbi -> sudo mysql -u admin -p -h 로 드가서
-> mysql 접속 -> USE be_eight 들어가서 -> SELECT * FROM student
-> 신비 들어가있나 확인 끝! exit
#clean up
-> RDS Databases 둘다 삭제 -> modify 젤밑 체크해제 eanalbe delete pro
-> apply immediately 체크 -> modify db instances -> action -> delete
-> create final snapshot 끄기 밑에꺼도 끄기  -> delete me, delet 
-> 동일하게 삭제다른하나 -> bastion-unun만 삭제 terminate 
-> cloud formation -> 선택 delete -> stack 드가서 resource 누르면 삭제중
-> 서울 -> vpc -> your vpc -> delete


엔드포인트 : mysql-rds.chu2sgcgegol.us-east-1.rds.amazonaws.com

mysqlPython.py 

Tip, 용어


  • EFS 보안 자체를 EC2 에걸린 security 그룹으로 걸어버리면 ec2 에 통과한것은 그냥 통과시켜버림

  • EFS :

    • EC2 인스턴스에서 NFS를 통해 파일 시스템을 마운트(연결) 할 수 잇음 , 이 마운팅은 리눅스의 일반적인 파일 시스템 처럼 사용되며, ec2에서 직접 읽기/쓰기 작업을 수행 가능 ,
    • 여러 EC2 인스턴스에서 동시 접근 가능
    • 자동확장
    • 고가용성 및 내구성 : EFS는 데이터를 여러 가용 영역에 복제하여 저장
    • 권한 및 보안 : EFS 는 aws iam 정책, NFS 파일 권한, 보안그룹을 통해 접근제어 강화
  • VPC Endpoint : VPC내에서 인터넷을 거치지 않고 aws 서비스에 접글 할 수 있게 해줌

  • Database :체계적으로 구성되어 쉽게 접근,관리,업데이트 할 수 있는 데이터의 집합

    • RDBMS
    • NoSQL
    • 무결성 : 데이터의 정확성, 일관성, 유효성이 유지되는 것
    • 개체 무결성 : 모든키는 primary로 선택된 컬럼(필드)를 가져야 한다,고유한 값을 가짐
    • 참조 무결성 : 관계형 데이터베이스 모델에서 참조 무결성은 참조 관계에 있는 두테이블의 관계가 항상 일관된 값을 갖도록 유지하는 것
    • 도메인 무결성(Domain integrity) : 테이블에 존재하는 값이 필드의 타입,Null 허용 등에 대해 정의하는 것, 올바르게 입력됬는지 확인
    • RDBMS : 데이터를 테이블 형식으로 저장하고 관리하는 시스템 => ACID 속성 보장
    • RDBMS 무결성 보장 : ACID
      • Atomicity : 원자성 = 모든 연산이 완전히 수행되거나 전혀 안되야함
      • Isolation : 격리성 = 동시에 실행되는 트랜잭션들이 서로 영향을 끼치지 말아야함
      • Consistency: 일관성 = 트랜잭션 실행 전후로 데이터베이스가 일관된 상태를 유지
      • Durability : 지속성 = 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영
    • Schema 스키마
      • 2.내부스키마 : 물리적인 저장장치 위에 db를 어떻게 정의할 것인지
      • 1.개념스키마 : 조직체 전체를 관리하는입장에서 db를 정의한것 1개밖에 없음(제약 조건) 일반적으로 스키마 하면 개념스키마
      • 3.외부스키마 : 사용자한테 보여주는 구조
    • ERD (Entity Relationship Diagram)
    • Nosql : 무결성보장 = BASE
      • Basically Available
      • Soft-state
      • Eventually Consistency
  • serverless : 직접 관리하지않고 아마존이 관리하는 것

  • 가용성 (Availability)

    • 시스템 서비스 또는 리소스가 플요할 때 사용 가능하고 정상적으로 작동하는 상태를 유지하는 능력
      • 가용성 향상 기술 : 로드밸런싱, 자동 스케일링, 데이터 복제, 장애 조치 구성
    • uptime(서버 정상시간) / 전체운용시간( UP tiem + Down time )
  • Load Balancer(부하 분산기) : 트래픽을 보낼때 어디에 보낼지 확인하는 곳, 받아야 할 트래픽이 넘치면 스케일링 해야함

  • Reliable : 서버가 정상이고 나의 서비스가 우리가 기대하는 응답을 할 떄

  • SLO(Service Level Objective) : 서비스 에대한 기대치 목표치 : EC2의 업타임 99.9%

  • Error Budget

    • 서비스가 허용 가능한 수준의 불완전성 또는 실패를 나타내는 지표
    • Error Budget = 100% -SLO(목표) = 1.5% (400ms을 넘겨도 되는 통신)
    • error budget 남아있으면 게속 없으면 다시만듬(소진)
    • 소진된경우 : 안정성 개선에 집중
  • Refactoring

    • 정의 : 외부동작을 변경하지 않으면서 내부코드를 개선하는 과정, 코드의 가독성, 유지보수성, 확장성을 개선시키는방법
  • RTO / RPO

  • RTO (Recovery Point Objective) : 복구시점 목표 : 데이터를 시점으로 복구할 것인가? == 데이터 유실을 얼마나 용인 할 수 있는가?

    • 복구 시점 목표 즉 저장하는개 많을 수록 비용이 많이 든다.
  • Scalability : 시스템 네트워크 도는 프로세스가 증가하는 작업량을 효율적으로 처리할 수 있는 능력

  • 주요 유형

    • 수직적 확장 : 단일 노드 성능 확장 (연결을 바꿔야 할때 멈춰야 해서 단지 하나의 것을 확장시켜서 늘리는것은 좀 빡셀수도 있음), 낭비 줄임
    • 수평적 확장 : 노드의 수를 증가 (통상적으로 horizontal scaling 를 많이 씀)
      스케일링을 바꾸는 것보다 여러개의 서버를 하는게 더효율적이고 쉽고 사용하기 용이함
      클라우드 상황에서 여러개의 스케일을 사용하면 기존의 트래픽을 끊기지 않고 사용할 수 있다.
  • Resiliency : 회복 탄력성

  • Auto scaling group : ec2 인스턴스 집합을 관리하는 논리적 그룹

  • GB : 네트워크 속도에서사용 , 십진법

  • GiB: 주로 운영체제 , 메모리에서 사용 , 이진법

  • 지연시간(latency) : 요청부터 응답까지의 시간(ms)

  • File Storage : 데이터를 파일 형태로 저장하고, 이를 폴더구조 (디렉토리) 내에서 조직화하는스토리지 시스템 ,우리가 지금 쓰는 구조 (일반적)

    • 특징 :
      • 계층적 구조 : 폴더와 하위폴더를 사용하는 트리 구조
      • 메타데이터: 파일이름, 생성 날짜, 수정 날짜, 권한 등의 정보 포함
      • 파일 레벨 접근 : 개별 파일 단위로 데이터 접근 및 관리 가능
  • Block Sotrage : 데이터를 균일한 크기의 블록으로 분할하여 저장하는 스토리지 시스템 (작음)
    -> 주차장 : 모두 균일한 크기의 주차공간 -> 덤프트럭에게 여러공간 할당

  • Object Storage : 데이터를 객체 형태로 저장하고 관리하는 스토리지 아키텍쳐

    • 데이터 구성 방식
      데이터를 객체 단위로 저장하며, 각 객체는 다음 세 가지로 구성됩니다:
      데이터: 저장하려는 실제 파일(이미지, 비디오, 문서 등).
      메타데이터: 데이터에 대한 설명(파일 이름, 크기, 생성 시간, 사용자 정의 속성 등).
      고유 식별자: 데이터를 식별할 수 있는 고유 키(UUID 등).
  • 클라우드에서의 스토리지 타입간의 공통점

    • 가용성
    • 접근성
    • 확장성
    • 데이터 보안
    • 메타데이터 관리
  • Connection type

    • DAS: Direct Attached storaged ,컴퓨터 또는 서버에 직접 연결된 스토리지 장치, 전용 액세스가 있음, 외부시스템에서 das 로 접근 불가능
    • NAS : Network Attached Storage
      네트워크에 직접 연결되어 파일 기반 데이터 저장 및 검색 서비스를 제공하는 스토리지 장치
      공유 문서에서 주로 사용
    • SAN : Storage Area Network
      서버와 스토리지 장치를 연결하는 전용 고속 네트워크
      AWS Block Storage
      instance storage, amazon storage
      Amazon Elastic Block Storage : DAS
  • application load balance(7계층이고)

  • network load balance(4계층임)

  • 인프라를 만들때 코드 형태로 내가 어떤 것을 할지 리소스를 만들어 놓으면 누구에게나 동일한 인프라를 형성 할 수 있다. 실수를 줄일 수 있다.

0개의 댓글

관련 채용 정보