내일배움캠프 8일차 개발일지

김광훈·2021년 9월 23일
2

TIL(Today I Learned)

목록 보기
8/49

💻첫 팀프로젝트

오늘 일주일 기간을 두고 첫 프로젝트를 시작했다. 프로젝트는 POC(proof Of Concept) 개념으로 진행된다 POC는 나도 이번에 처음 알았는데, 새로운 프로젝트가 실현 가능성이 있는가에 대한 최소단위까지만을 개발하는 것을 의미한다고 한다. 이번 프로젝트는 팀원 단위로 하는 프로젝트인 만큼 내 흥미를 끌고 있다.

⚙주제 선정


  • 주제 선정은 openAPI를 사용하면서도 기본 CRUD를 지키는 선에서 선정했다.
  • 주제 선정하는데는 생각보다 많은 시간이 걸렸다. 흥미를 끌면서도 우리가 배운 기술 안에서 선정하는 것은 생각보다 어려운 일이였다.
  • 주제는 재료를 선택하면 재료에 맞는 요리를 추천해주는 페이지이다.

⚙기능 선정


이후 페이지가 갖출 기능에 대해 토론했다.

1. 재료 입력

  • 재료를 선택한다.
  • 음식 장르를 선택한다.
  • 난이도를 선택한다
  • 조리 시간을 선택한다.

2. 추천 레시피 화면에 표시

  • 추천 레시피를 화면에 표시해준다.
  • 레시피는 썸네일, 요리이름, 간단 설명, 좋아요를 표시해준다.

3. 추천 레시피 상세 표시

  • 레시피의 썸네일, 요리이름, 간단 설명, 조리 방법, 좋아요를 표시해준다.
  • 레시피의 댓글을 확인하고 입력할 수 있다.

4. 좋아요 선택, 취소

  • 좋아요 누르면 좋아요 탭에 기록된다.
  • 좋아요 취소를 누르면 좋아요 탭에서 삭제된다.

⚙API 구분


기능을 정하고 나서 API를 어떻게 구성할지 나누어 보았다.

1.레시피 리스트 가져오기

  • GET
  • Response : 레시피 리스트

2. 레시피 상세보기

  • GET
  • Response : 상세 정보 딕셔너리
  • Request : recipe_id

3. 댓글 작성

  • POST
  • Response : "성공"
  • Request : recipe_id, comment

4. 좋아요 항목 가져오기

  • GET
  • Response : 좋아요 리스트

5. 좋아요 선택

  • PUT
  • Response : 성공
  • Request : recipe_id

6. 좋아요 취소

  • PUT
  • Response : 성공
  • Request : recipe_id

⚙Github


팀장님의 Git계정에 프로젝트를 관리할 레포지토리를 생성했다. 앞으로 모든 프로젝트는 git을 통해서 관리하게 될 것이다.

⚙느낀점


생각보다 프로젝트를 하기 위해서 선정해야하는 항목도 많고 생각해야될 것도 많았다. 기능 선정하기 앞서 우리가 구현가능한 기술인지도 확인해야 했으니 말이다. 그 뿐만 아니라 기능을 선정하고 API를 구분하는 것은 더욱 더 헷갈렸고 구상이 끝난 지금도 여전히 헷갈린다 아마 프로젝트 진행동안에 계속해서 위 구상안은 계속해서 변동되지 않을까 생각이 든다. 역시 오늘도 많이 부족하다는 것을 느꼈다.

🛒 AWS 정리

AWS강의를 듣기 시작했다. 인프라 관련 직종이 돈을 엄청 번다는 강의 내용을 들은 이후로 AWS강의에 관심이 크게 가기 시작했다.

⚙ 강의 목표


  • AWS가 개발과 서비스 운영에 왜 필요한지 알아 본다.
  • 수많은 AWS 기술 중에 서비스를 운영하고 개발하는데 필요한 핵심 기술을 알아 본다.
  • AWS를 이용해서 서비스를 운영할 수 있게 된다.

⚙ AWS란?


  • 클라우드 서비스로 아마존에서 운영하는 서비스이다
  • IDC센터와 비교되며 IDC센터와 다르게 인터넷으로 서버를 구매해서 이용할 수 있다.
  • 리전 = IDC센터, 존 = 서버컴퓨터위치(강남,영등포)
  • AWS를 가장 잘 사용하는 회사는 넷플릭스이며 AWS에 대해서 잘 알고 싶다면 넷플릭스에서 어떻게 사용하는지 찾아보자. https://aws.amazon.com/ko/solutions/case-studies/netflix/

⚙ S3


⚙ IAM


⚙ IAM 이용해서 AWS SDK를 이용한 S3 파일 업로드


IAM은 S3에 연동하기 위하ㅐ 사용하는 서비스이다 이때, S3에 연동하는데 도움을 주는 라이브러리가 AWS SDK이다.

1. 사용자 추가

  • 액세스 유형 체크
  • 권한 부여 : AmazonS3FullAccess 체크 (S3를 위한 사용자이기 때문이다)
  • 액세스 키 ID시크릿 액세스 키를 복사해 놓는다.

2. SDK 사용하기

  • SDK 설치하기
  • SDK 버전 확인
   aws --version
  • 업로드
// 복사 명령어 설명 : https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html
aws s3 cp {파일명} s3://{버킷이름} --acl public-read

⚙ Python을 사용해서 S3에 연동하기


실무에서 실질적으로 더 많이 사용하는 형식으로 프레임워크 Flask를 이용해서 S3에 업로드가 가능하다. 추가로 Python으로 SDK를 제어하기 위해서는 boto3 라이브러리를 추가로 설치해야한다.

import boto3
from flask import Flask, render_template, request, jsonify

@app.route('/')
def main():
    return render_template('index.html')

@app.route('/fileupload', methods=['POST'])
def file_upload():
    file = request.files['file']
    s3 = boto3.client('s3')
    s3.put_object(
        ACL="public-read",
        Bucket="{버킷이름}",
        Body=file,
        Key=file.filename,
        ContentType=file.content_type)
    return jsonify({'result': 'success'})

⚙ S3 정적호스팅 기능을 이용해 외부에 공개


S3의 정적호스팅 기능을 이용하면 웹페이지를 다른 사람에게도 보여줄 수 있다.

  • 정적호스팅 기능을 사용할 버킷에 들어간다.
  • 속성의 정적 웹 사이트 호스팅 편집에 들어간다.
  • 정적 웹 사이트 호스팅을 활성화 후 '인덱스 문서', '오류 문서'에 외부 공개할 파일 이름을 작성한다.
  • 속성의 정적 웹 사이트 호스팅 편집 란으로 들어가면 url을 제공한다. 해당 url로 들어가면 버킷에 업로드된 파일을 확인할 수 있다.

⚙ S3 비용계산


AWS사용하면서 발생하는 비용을 계산하는데 도움을 준다.
https://calculator.aws/#/createCalculator/S3

✔ 생각 정리

시간이 굉장히 부족하니 효율적으로 공부하고 프로젝트에 임해야 겠다는 생각을 했다. 앞으로 다음의 항목들을 지켜봐야겠다.

  • 기술 테스트할 때 생각하고 몇번 어떻게 테스트할지 생각하고 테스트하기.
  • 충분히 머리에 구글링 내용을 담고 이해한 다음에 테스트 하기.
  • 테스트 체크리스트를 작성하여 테스트하고 결과를 간단하게나마 작성하기.
profile
잘 부탁드려요

0개의 댓글