✔️Backend 30

[Milestone Week 3] 복약 정보 제공 및 관리 기능

3주차 때는 2주차의 복용 일정 등록 및 관리 기능에 이어서 약올림의 또다른 핵심 서비스인 복약 정보 제공 및 관리 기능을 구현했다. 이 기능은 구현 이전부터 '약 상세 정보를 제공해주는 곳이 있나, 있으면 어디인가?' , '이 데이터를 우리 DB에 저장 할 것이냐 아니면 매번 OpenAPI로 요청할 것이냐', '어떤 정보를 제공해 줄 것인가?', 'OpenAPI를 요청하는 곳을 Client에서 할 것인가 Server에서 할 것인가?' 등에 대한 팀원간 논의가 활발하게 이루어진 부분이기도 하다. 이번에 구현했던 기능들은 기술적인 이슈나 원리를 아는 것 보다 '사례와 사용법'을 아는 것이 핵심이다. 그만큼 공식문서보다는 나보다 먼저 공공데이터, OpenAPI, xml정보의 json화를 고민했던 사람들이 기..

[Milestone Week 2] 알람 일정 CRUD 기능 구현

1. 알람 일정 등록 기능 2주차의 알람 일정, 특히 등록에 관한 기능은 약올림 서비스의 핵심 서비스 중 하나로, 카메라 촬영 또는 직접 입력으로 촬영한 이미지와 함께 알약을 등록하며 캘린더와 시간, 주기 계산 등이 모두 복합적으로 이루어져야한다. 그래서 온 팀원이 마치 한 몸인 것처럼 기능구현의 티키타카가 이루어져야했고, 실제로 그렇게 하였다! 그래서 아래와 같은 아름다운 기능이 구현 될 수 있었던 것이다. 특히 약 등록의 과정이 매우 복잡했다. 스크린 이동이 많았고, 그 스크린마다 정보(state)를 항상 가지고 이동시켜야했기 때문이다. 이 과정에서 나는 camera에 접근하여서 전방/후방카메라 선택/이미지 촬영/선택 또는 재촬영 기능과 알약 이미지를 통한 종류 예측 기능에 대해 집중하였고, HJ님이..

[Milestone Week 1] Home, Calendar관련 API & CountTimer 구현

이번에 Full Stack 포지션을 맡게 되면서 Server와 Client의 작업을 동시 진행하였다. 프로젝트를 진행하면서 개발적인 역량을 키울 수 있었던 것도 정말 큰 성장이지만 무엇보다1. 필요한 기능이 무엇인지 정확하게 파악하고(문제 정의 능력),2. 그 기능을 구현하기 위해 정확하고 효율적인 질문/검색을 하고,3. 찾은 해답을 어떻게 내 상황에 맞게 적용하는 능력을 기를 수 있어서 정말 값진 시간이었다는 것이다. Milestone 기준 본격적인 기능구현 1주차에 Server와 Client side에서 한 일을 적어보고자 한다. 1. Server side로그인 완료 후 처음 앱에 들어가자마자 보이는 Home 페이지와 약올림 서비스의 핵심 페이지라 할 수 있는 Calendar 페이지에 필요한 API를..

[초기 세팅 및 배포] Heroku 서버, DB 배포

직접 배포를 하기 전에 Heroku에 대해 간단한 사용방법을 공부하고 정리해두었었다. 그런데 역시나.. 직접 해보기 전까지는 절대 모른다 ㅎㅎㅎ HJ님이 도와주시지 않으셨다면 속이 터져 엉엉 울어버렸을 것이다. 서버 배포와 RDS 사용을 해본 것을 정리해보려 한다. 1. 준비 Heroku CLI설치 (Mac용) #터미널 brew install heroku/brew/heroku 코드상에서 배포환경으로 변경해주어야 할 것은 변경하기 예를 들어 app = create_app(os.getenv('BOILERPLATE_ENV') or 'prod') #'dev'를 'prod'로 2. 서버 배포 - Flask로 구현된 사이트를 Heroku를 통해 배포하기 위한 준비단계 ① 원래 사용하던 가상환경이나 아니면 배포만을 ..

[초기 세팅 및 배포] Flask-RESTX: MVC 폴더 구성 및 Flask REST API 구현하기

딥러닝을 활용한 이미지 처리기능이 있는 앱 서비스를 개발하기로 하고, DB스키마와 API들을 구성하니 우리 팀이 flask로 구현해야할 데이터베이스 모델은 약 5-6개, API는 27개 이다.. 이렇게 많은 API를 만들어야하고 모델도 파일을 분리하여 구현해야겠다고 생각하니 데이터베이스 모델을 한 파일이 아닌 여러 파일에 나누어서 짜되 다른 migrate = Migrate(app, db)시에는 db에 모두 불러올 수 있도록 하는 것 최대한 mvc 폴더 구성을 따라보려고 한 것 을 목표로 두고 방법을 찾아보았다. 나는 일단 MVC 패턴을 최대한 구현하여 각 요청에 대한 응답까지 받아서 잘 작동하는지 확인하고 싶었다. 그래서 복잡한 우리 프로젝트 스키마 전에 계속 예시(14. Python ORM - Flas..

[초기 세팅 및 배포] DB Setting

우리 프로젝트의 DB스키마는 위의 그림과 같다. (※ 현재 2020/12/13일, 프로젝트를 진행하면서 DB구조가 약간 수정되었다. 수정된 DB 스키마는 아래 를 클릭하면 볼 수 있다. ) 더보기 1. 각 테이블 설명 schedules_date: 각 알람 하나하나의 정보를 담고있는 테이블 scedules_common: 한 주기를 가지고 있는 알람 정보 테이블 users: 사용자 정보 테이블 (login 필드는 'social'이면 소셜회원가입을 한 것, 'basic'은 일반 회원가입으로 가입한 것을가 다 나타낸다.) medicines: 약 정보가 담긴 테이블 2. Relationship user 1 - schedule_date n (schedules_udate) user 1 - schedule_common..

[DevOps] CI/CD

DevOps DevOps란 개발(Development)과 운영(Operation)의 합성어로, 개발과 운영을 하나로 합쳐서 일하는 철학, 도구, 환경, 문화 등의 조합을 나타낸다. 개발부터 배포까지 모든 단계에 자동화와 모니터링을 도입해서 더 짧은 개발 주기, 더 많은 배포 빈도, 안정적인 소프트웨어를 배포하자는 목표를 가지고 있다. 위의 설명을 보면 '자동화'와 '모니터링'이 필요한 것 같다. 그래서 데브옵스는 서버 구성, 배포, 테스트에 있는 반복작업을 최대한 자동화하여 배포 리소스를 줄이는 것이 시작이다. 데브옵스를 실천하는 방식은 여러가지가 있고, 그 중 One-Step 빌드와 배포가 있다. 빌드(Build)란 여러 개발자가 개발한 소스 코드 파일을 통합하고, 실제 동작 가능한 독립적인 S/W 변..

Dev/DevOps, Infra 2021.01.15

[NGINX] EC2에 nginx 설치 및 세팅

첫 번째 프로젝트로 진행한 SAFU 웹 서비스 을 배포하기 위해 서버 구축을 하려하며, '서버 단위의 로드 밸런서' 아키텍쳐 중 애플리케이션 서버가 (일단은)하나인 아래의 구성으로 진행하고자 한다. 순서는 1. EC2 배포 및 inbound 설정 2. ACM 에서 SSL 인증서 발급 3. ELB 생성 및 리스너 세팅 4. Route53의 도메인과 ELB의 인스턴스 DNS 연결 5. EC2에 nginx 설치 및 세팅 으로 진행 될 것이다. 이번에는 5. EC2에 nginx 설치 및 세팅 에 대해 정리해보고자 한다. NGINX란 서버 인스턴스에는 클라이언트의 요청을 처리해주는 서버 소프트웨어가 필요하다. 서버 소프트웨어는 크게 웹 서버와 웹 애플리케이션 서버(WAP; Web Application Server..

Dev/DevOps, Infra 2021.01.15

[RDS] 데이터베이스 서버 생성과 접속

첫 번째 프로젝트로 진행한 SAFU 웹 서비스 을 배포하기 위해 서버 구축을 하려하며, '서버 단위의 로드 밸런서' 아키텍쳐 중 애플리케이션 서버가 (일단은)하나인 아래의 구성으로 진행하고자 한다. [EC2] AWS를 이용한 서버 환경 이해 및 구축에 정리해둔 를 보면 단일서버의 여러 단점으로 인해 애플리케이션과 데이터베이스 서버를 분리하는 구조가 나왔다. 그리고 서버 단위의 로드 밸런서는 이런 구조로 되어 있다. 여기서 RDS로 데이터베이스 서버를 만들어보고자 한다. 1. Amazon RDS(Relational Database Services) Amazon RDS는 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영, 확장 할 수 있는 서비스이다. 이는 매우 비싸다. (프리티어는 RDS 단일 AZ(..

Dev/DevOps, Infra 2021.01.13

11. SAFU 웹 서비스 배포 완성기

AWS 공부와 병행하여 배포를 진행하였기때문에 AWS 카테고리에 정리 및 저장해 놓았습니다. 여기에는 링크를 순서대로 삽입하는 것으로 대신하겠습니다. Server Side 1. [EC2] AWS를 이용한 서버 환경 이해 및 구축 2. [ACM] 도메인 주소 생성 및 AWS Certification 3. [ELB] Elastic Load Balancer 생성 및 세팅 4. [Route 53] Route53의 도메인과 DNS 연결 5. [NGINX] EC2에 nginx 설치 및 세팅 Database 1. [RDS] 데이터베이스 서버 생성과 접속 Client Side 1. [ACM] 도메인 주소 생성 및 AWS Certification 2. [S3] S3를 이용한 정적 웹 사이트 호스팅 3. [CloudFro..