5일 전

대외활동주간추천봉사활동인사이트

[주간추천] 9월 4주차 대외활동 추천

9월 4주차 대외활동 추천

알렌

알렌

[주간추천] 9월 4주차 대외활동 추천

2023년 09월 18일

대외활동주간추천인사이트

[주간추천] 9월 3주차 대외활동 추천

9월 3주차 대외활동 추천

알렌

알렌

[주간추천] 9월 3주차 대외활동 추천

2023년 09월 11일

대외활동주간추천인사이트

[주간추천] 9월 2주차 대외활동 추천

9월 2주차 대외활동 추천

알렌

알렌

[주간추천] 9월 2주차 대외활동 추천

2023년 09월 04일

봉사시간대학생인사이트대외활동봉사활동

[주간추천] 9월 1주차 대외활동 추천

9월 1주차 대외활동 추천

알렌

알렌

[주간추천] 9월 1주차 대외활동 추천

2023년 08월 28일

인사이트대외활동공모전서포터즈봉사활동기자단

8월 5주차 대외활동 추천

8월 5주차 대외활동 추천네이처리퍼블릭 네리뷰어 8기Xbox 대학생 앰버서더 5기클린져스2023 삼성증권 대학생 숏폼 공모전

알렌

알렌

8월 5주차 대외활동 추천

2023년 08월 27일

개발

[Django] N+1 쿼리 문제

프로젝트를 진행하면서 시간에 쫓겨 일단 구현만 했더니django-debug-toolbar를 통해 sql을 분석해 보니 filter, all 등으로 가져온 거의 모든 쿼리셋을 N+1번 DB 히트를 발생시켰습니다. 리팩토링을 통해 쿼리 성능 개선을 하던 과정에서 공부하고 적용했던 것들을 복습하고자 포스팅합니다.

한스

한스

2023년 08월 27일

개발

[Django] Elastic Beanstalk + ElastiCache + Celery 배포

백엔드의 특정 API 로직에서 처리 시간이 오래 걸릴 경우 Celery를 사용하는 것이 일반적입니다.

한스

한스

2023년 05월 26일

개발

[AWS Lambda] VPC와 서브넷 설정을 통한 인터넷 연결 (feat. 이메일 발송)

안녕하세요:) 메이캔 개발셀 한스입니다.

한스

한스

[AWS Lambda] VPC와 서브넷 설정을 통한 인터넷 연결 (feat. 이메일 발송)

2023년 01월 09일

인사이트

우디의 토이프로젝트 - 배포편 外傳(Lambda 下)

한 편에 끝낼 생각이었다. 진짜다.분명 쓰기 시작할 때는 이거, 이거, 이거만 딱 설명하면 되겠다 했는데...아니였다. 쓰다보니 알아야 할 것도 많고, 나 또한 배포하면서 수많은 버그를 만났기에...많이 아프다...타이슨 형님 말이 맞다 "누구나 계획은 있다. 쳐 맞기 전까지는..."AWS 너무 아프다...1. Lambda 환경변수 설정우리는 숨기고 싶은 정보를 환경변수로 만들어 .env파일 안에 관리하고 있다.ex)# SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = env.str("SECRET_KEY")

우디

우디

우디의 토이프로젝트 - 배포편 外傳(Lambda 下)

2023년 01월 09일

인사이트

우디의 토이프로젝트 - 배포편 外傳(Lambda 上)

분명 멋있게 Cheers 🍻를 하며 헤어 졌건만 이 자리가 그리운 탓인지 숙취와 함께 이 글을 쓰고 있다.배포엔 수많은 방법들이 있다. 앞서 배포편 上, 中, 下, 完에 걸친 글은 AWS ElasticBeanstalk(이하 EB)을 활용한 방법이였다. 이번 편에서 소개할 방식은 Lambda를 활용한 Serverless 방식이다. 우선 이 둘의 차이부터 알아보자지금 쓰고 있는 이 가이드는 기본적으로 앞서 다뤘던 배포편에 해당하는 프로젝트를 전제로 쓰고 있다.(딱 하나 바뀐 점이라면, 가상환경을 pipenv가 아닌 poetry를 써서 구축했다라는 걸 전제로한다.) 그렇기에 이 글에서 설명하고 있지 않은 부분, 또 이 글에서 다루고 있지 않은 설정들은 이전 배포편을 찾아보길 바란다.ElasticBeanstalk(EC2) vs Lambda사실 EB는 여러 서비스를 묶어놓은 패키지와 같은 상품이다보니 EB와 Lambda를 비교하기엔 무리가 있다. 그렇기에 EB를 이루고 있는 주된 서비스인 EC2와 비교를 해보자.EC2: Elastic Compute Cloud독립된 컴퓨터를 임대해주는 서비스로 그 컴퓨터를 내 컴퓨터인 것처럼 네트워크 구성이나 스토리지 관리 등을 할 수 있는 서비스다.EC2는 가상 컴퓨터 자체를 24시간 임대하는 것이기 때문에 사용자가 서비스에 접근하지 않아도 비용이 들고, 트래픽에 따른 성능의 scaling 작업이 필요하다.Lambda서버 구성 없이 코드로 작성된 함수를 호출할 수 있도록 구성된 서비스이다. 가장 큰 특징은 Serverless라는 점인데, 이 말은 서버가 없다는 뜻은 아니고 개발자가 서버의 존재를 신경 쓸 필요가 없다는 뜻이다.Lambda는 함수가 호출 될 때만 비용이 발생하고 Auto Scaling을 지원한다. 대신 한번에 15분의 러닝타임과 코드 용량이 최대 250MB(압축하면 50MB)인 것이 단점으로 꼽힌다.EC2를 활용해 서버를 띄우는 작업은 이미 해봤기에 이번엔 Lambda를 활용한 배포를 해볼 것이다.Lambda 배포 준비물올릴 코드는 이전 배포편에서 다룬 코드와 같은 Stack인 Django로 만든 Backend Api 서비스라고 생각하고 진행하겠다.꺾이지 않는 마음원활한 인터넷 상태AWS 아이디이정도면 모든 준비는 끝났다. 시작해보자1. IAM 설정AWS 홈페이지(https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/home) 에 로그인하자. 가장 먼저 해볼건 사용자 정책 생성이다.가. 정책 생성IAM 대시보드에 들어가 아래 첨부한 사진처럼 AWS 계정 ID는 어디 따로 복사해두고 왼쪽 카테고리에 '정책'을 클릭하자.아래 코드를 그대로 복사해 위 사진 처럼 JSON에다가 붙여넣자[본인의 iam account 번호 자리]에 아까 따로 적어놓은 계정 ID를 입력하자(번호자리를 감싸고 있는 [ ]는 지우고 입력)입력이 모두 끝났다면, '다음: 태그' 버튼 클릭{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:GetRole", "iam:CreateRole", "iam:PassRole", "iam:PutRolePolicy" ], "Resource": [ "arn:aws:iam::[본인의 iam account 번호]:role/" ] }, { "Effect": "Allow", "Action": [ "lambda:GetAlias", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:UpdateFunctionCode", "lambda:ListVersionsByFunction", "lambda:GetFunctionConfiguration", "lambda:DeleteFunctionConcurrency", "lambda:UpdateFunctionConfiguration", "lambda:GetFunction", "lambda:InvokeFunction", "lambda:AddPermission", "lambda:RemovePermission", "lambda:GetPolicy", "apigateway:POST", "apigateway:GET", "apigateway:PUT", "apigateway:DELETE", "apigateway:PATCH", "apigateway:UpdateRestApiPolicy", "events:DescribeRule", "events:PutRule", "events:ListTargetsByRule", "events:ListRules", "events:ListRuleNamesByTarget", "events:RemoveTargets", "events:DeleteRule", "events:PutTargets", "logs:DescribeLogStreams", "logs:FilterLogEvents", "logs:DeleteLogGroup", "cloudformation:DescribeStackResource", "cloudformation:UpdateStack", "cloudformation:ListStackResources", "cloudformation:DescribeStacks", "cloudformation:CreateStack", "cloudformation:DeleteStack" ], "Resource": "" }, { "Effect": "Allow", "Action": [ "s3:", "s3-object-lambda:" ], "Resource": "*" } ] }이름과 설명을 채워놓고 '정책 생성' 버튼을 클릭하면 정책 생성 완료!요기 아래 사진을 보면 우리가 만든 정책이 아주 이쁘게 들어와 있는게 보일 것이다.나. 사용자 추가자 이제 정책을 만들었으니 이 정책을 사용할 사용자를 만들어보자최종적으로 만들어진 사용자의 엑세스 키 ID와 비밀 엑세스 키를 무조건 따로 적어두자 잊어버려서도, 잃어버려서도 안된다.다. aws profile 등록자 이제 터미널을 켜보자.$ cd ~/.aws $ code configIAM을 이용하여 사용자를 만들고 등록한 적이 있다면 아래와 같은 형식이 이미 등록되있을 수 있다.[profile default] aws_access_key_id = ~~~~ aws_secret_access_key = ~~~~우리는 사용자를 추가하는 거기 때문에 새로 만든 IAM 사용자를 profile로 등록시킬려면위 사진처럼 같은 형식으로 추가하면 된다.aws_access_key_id 와 aws_secret_access_key 는 IAM 사용자 추가 때 최종적으로 부여받은 엑세스 키 ID와 비밀 엑세스 키를 적어넣으면 된다. 물론 profile 뒤엔 아무 이름이나 정해서 쓰면 된다.ex)[profile default] aws_access_key_id = ~~~~ aws_secret_access_key = ~~~~

우디

우디

우디의 토이프로젝트 - 배포편 外傳(Lambda 上)

2022년 11월 22일

인사이트

우디의 웹스크랩핑 - python 기초편 下

저번 시간에 이어 python 이것만큼은 알고가자의 취지로 진행한 강의 요약본입니다. 강의를 들은 학생들의 복습용으로 만들어진 가이드글이라, 가이드만 읽고서는 이해가 어려울 수도 있는 점 양해부탁드립니다.1. Methods특정 객체(데이터) 안에 있는 함수ex) 난 전화하려고 스마트폰을 샀는데, 알고보니 그 안엔 사진 기능, 계산 기능, 인터넷 등등 여러가지 기능이 있었다. 오우 싯 이거 개꿀이잖아~String methods 예시 https://www.w3schools.com/python/python_ref_string.aspname = "woody" print(name.upper()) # WOODY print(name.lower()) # woody print(name.capitalize()) # Woody print(name.replace("o", "🍊")) # w🍊🍊dy2. Data Structure가. List# 리스트에 형태 list1 = [] list2 = [1, 2, 3] list3 = ["Life", "is", "too", "short"] list4 = [1, 2, "Life", "is"] list5 = [1, 2, ["Life", "is"]]

우디

우디

우디의 웹스크랩핑 - python 기초편 下

2022년 11월 15일

인사이트

우디의 웹스크랩핑 - python 기초편 上

청년재단과 함께 시작한 오리지널 3분기에서 처음 선 보이는 클래스로 웹스크랩핑을 시작하기 위해 기초로 알고있어야하는 python에 기본을 배워보는 편입니다. 해당 글은 우디의 웹스크랩핑(이하 우웹스) 첫 수업을 요약한 가이드이니 복습을 하실 때 참고하시기 바랍니다.1. Hello Worldprint("Hello World")2. 변수(Variables)변수란? 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미합니다. 즉, 변수란 데이터(data)를 저장할 수 있는 메모리 공간을 의미하며, 이렇게 저장된 값은 변경될 수 있습니다. 반복되는 귀찮음을 막기위한 대명사name = "우디 페르난도 알버츠 세뇨리따 프라이인 드로스테 피아루이제"

우디

우디

우디의 웹스크랩핑 - python 기초편 上