항해14기 본과정/항해14기 개발일지 55

[항해 14기] 개발일지45 (실전프로젝트 - Nginx)

실전프로젝트 - 2주차 - 회의 없음 1. 작업 내역 1) Nginx - 트래픽이 많은 웹사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반구조의 경량화 웹 서버 프로그램 - 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, 또는 Reverse Proxy Server로 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서 역할도 함 - 동시에 많은 연결을 처리할 수 있는 다중 스레드 아키텍처와 이벤트 기반 구조 가짐. 대규모 트래픽 처리에 적합 - 가벼우면서 확장성이 뛰어나 많은 웹 서비스에서 빠르고 안정적인 성능을 제공 - 동적 콘텐츠를 처리하기 위한 FastCGI, 스트리밍을 위한 RTMP, 보안 기능을 위한 SSL/TLS 등 다양한 기능을 제공 2) Apache와 비교 - 아파치..

[항해 14기] 개발일지44 (실전프로젝트 - 도메인, HTTPS 1차 시도)

실전프로젝트 - 2주차 1. 회의 내역(BE 관련) 1) 카카오 싱크 - 성인 인증 이슈로 반려될 경우 일반 유저 회원가입/로그인 로직 - 소셜 로그인만 연결하여 유저가 login진행 시 db에 해당 id가 있으면 로그인 처리 - 없을 경우 자동으로 회원가입 진행(카카오의 res값을 우리 db에 밀어넣음) - 관련하여 유저에게 공지/약관 등에 대한 고지 필요 2. 작업 내역 1) 도메인 - 가비아 등에서 보유한 ip주소를 기반으로 발급 가능 - IP : 인터넷에 연결된 장치들의 각각의 식별 주소 - 도메인 : 편리한 식별을 위해 ip에 이름을 부여한 것 naver.com -> 220.95.233.172 - 구성요소 : daum.co.kr -> daum(컴퓨터의 이름), co(최상위 도메인), kr(한국 ..

[항해 14기] 개발일지43 (실전프로젝트 - CD 환경 구축)

실전프로젝트 - 1주차 1. 회의 내역(BE 관련) 1) 무한스크롤 - 위스키 리스트, 지도에서 가게 조회, 위스키 가게 리스트 에 적용 예정 2) 위스키 카테고리 - 무한스크롤 방식으로 인하여 res에 일부 데이터가 끊어서 들어가게 됨 - FE에서 전체 데이터를 받지 못하게 되어 각 카테고리 페이지마다 별도의 api 제작 예정(기존에는 전체 데이터를 FE에서 받은 후 FE에서 분류) 3) 추가 스코프 - 카톡 알림 - 유저가 줄서기 알림카톡에서 특정 버튼을 누르면 서비스api와 연동(카톡알람 api 연구 필요) - 마이페이지 줄서기링크를보냄(웹페이지에서 유저가 점주에게 메세지 보내기 버튼) - 점주에게 유저 반응만 전송 - 위 방식 중 선택 예정 4) 카톡api 성인 인증 - 술 관련 컨텐츠여서 성인인..

[항해 14기] 개발일지42 (실전프로젝트 - GIT Flow, CI 환경 구축)

실전프로젝트 - 1주차 1. 회의 내역(BE 안건) 1) 주류 필터링 기준 변경 - 위스키테이블 db 수정 필요 2) 위스키/위스키바 크롤링 - 크롤링 구상 필요 - 위스키바의 경우 관련없는 사진이 포함되는 경우가 있음, 해당 부분 처리 로직 구상 필요 3) 예약 좌석 UI - BE의 RES값 유지 4) 유저/점주 로그인 - 회원 가입 시 중복 검사에서 유저/점주의 테이블 모두 조회하여 중복 없도록 진행 - 유저는 소셜 로그인/가입만 가능하도록 변경 - 로그인 시 유저/점주 구분값 res로 전달 5) 로그인 및 인가 처리 - 로그인한 유저 타입에 따른 버튼 타입 변경 관련하여 res로 userid를 전달하여 프론트에서 전역관리 2. CI 환경 구축 1) CI란? - Continuous Integratio..

[항해 14기] 개발일지41 (실전프로젝트 - 지도 OPEN API, EC2배포)

실전프로젝트 - 1주차 1. 회의 내역(BE 관련) 1) 최근 검색어, 인기 검색어 - 기능의 활용도가 부족하다고 판단 - 기본 crud 기능으로 개발스코프와 db 테이블을 증가시키는 것은 실전프로젝트 목적에 부합하지 않다고 판단 2) 내가 찜한 위스키를 판매하는 가게 내역 - 필요한 기능으로 판단 - 지도api 연구 이후 api 작성 예정 3) 멘토링 일정을 위한 mvp설정 - 금요일까지 기본CRUD, multer+s3, 소셜로그인, CI/CD, 배포 예정 2. 작업 내역 1) 지도api선정 - 구글맵 : 서울 지역으로 스코프를 제한할건데 타지역 데이터가 쓸데없이 포함되어 로딩 속도 저하, 추가비용 발생 가능성 - 네이버와 카카오는 기능이 비슷하다 판단하였는데 https://epdev.tistory.c..

[항해 14기] 개발일지40 (실전프로젝트 - BE아키택쳐)

실전프로젝트 - 1주차 1. 회의 내역 (BE 안건) - 디자인 레퍼런스 - 기술 스택 선정 시 선정 이유에 대한 자세한 이유 필요 - BE 기능 분담 2. 작업 내역 1) 코드/깃 컨벤션 2) 뼈대 스트럭쳐 제작 - express 세팅 - 레이어드 아키택쳐(api 라우트 기본 틀) - my sql 테이블 생성(sequlize,migration) - 필요 npm 선정/세팅 3) 기능 선정 3. 회고 - 기존 프로젝트에서 테이블과 라우터 등 기능별 담당자들이 각자 제작하여 합쳤더니 변수명이나 테이블 참조값 등의 싱크가 맞지않아 다시 통일 하느라 시간을 많이 사용하였었음 - 이를 방지함과 더불어 실시간 오타/오류 검증을 위해 본인의 로컬에서 완성 하기로 하였고, 팀원간 화면공유/라이브쉐어를 진행 - 각자 하..

[항해 14기] 개발일지39 (실전프로젝트 - 발제2)

실전프로젝트 - 1주차 1. 회의 내역 - 팀명/서비스명 선정 2. api명세 작성 - https://team-spirits.oopy.io/common/api TASK & API 설계 개발 스프린트 team-spirits.oopy.io 3. 회고 - api명세서는 FE의 참고자료이면서 BE의 참고자료 이기도함. 효율적인 개발 협업을 위한 중요한 역할 - 명확한 작성 양식과, 수정 사항의 실시간 반영이 이뤄지지 않으면 개발 프로세스에 및 기능 로직에 대한 오해가 생겨 시간낭비가 진행됨을 그동안의 미니 프로젝트들을 통해 겪었음. 기능에 변화가 생겼을때와 특정 시간을 정하여 명세서 페이지를 지속적으로 체크할 예정

[항해 14기] 개발일지38 (실전프로젝트 - 발제)

실전프로젝트 - 1주차 1. 주제 선정 1) 프로젝트 진행 방향 (1) 메인 기능 - 소켓, 웹RTC 중 택 1 (2) 기획보다는 기술 스택에 더 집중 (3) 화면 비율은 모바일 사이즈 기준으로 진행 (4) 지도 API는 메인기능보다 사이드 스코프로 (5) 공공 API에서 가져올 수 있는 데이터 있다면 가져와서 데이터 핸들링 진행 2) 주제 회의(후보 2 - 위스키바로 결정) (1) 통신 + 위치정보 + 데이터 가공을 포함할 수 있는 주제로 브레인스토밍 (2) 후보 1 : 배민원 - 통신 + 위치정보 (3) 후보 2 : 위스키 - 위스키에 대한 접근성과 업장-손님 연결 해주는 애플리케이션 부재(현재는 인스타 공지) - 위스키바 점주도 가입가능, 근무중인 바텐더/매니저가 현재 보유 중인 위스키 수량 손님들..

[항해 14기] 개발일지37 (클론프로젝트 - 발표)

클론프로젝트 주차 1. 발표/시연 2. 회고 1) 이번주에 도전한 기술 : socket.io - socket.io를 이용한 1:1, 단체 채팅 구현 - FE리소스가 부족하여 클라이언트/서버 로직을 전부 제작하게 되었고, FE-BE 흐름에 대한 인지가 높아짐 2) 기본로직 - socket.io를 이용하여 실시간 양방향 채팅 구현 - 입장/퇴장 메세지 구현, 내가보내는 채팅과 다른사람의 채팅 구분 - 채팅방 개념 구현: 같은 채팅방에 입장하여야 대화 공유 가능 3) 심화로직 - 게시글 작성자의 정보와 로그인한 유저의 정보를 이용하여 구매자가 게시글의 채팅하기를 누르면 판매자와 자동으로 채팅방 생성 - 채팅에 read(true/false) 속성을 추가하여 읽음/안읽음 로직 구현 채팅방에 입장시/입장해 있을 시..

[항해 14기] 개발일지36 (클론프로젝트)

클론프로젝트 주차 1. 작업 내역 - BE 아키택쳐/스트럭쳐/ERD 설계 - FE-BE 연결 - 댓글 CRUD - like 로직 - 채팅 구현 2. socket.io로 채팅 구현 *DB 필요한 로직 생략 1) 클라이언트 로직 더보기 const socket = io(); socket.on("connect", () => { let name = prompt("닉네임을 적어주세요", "") || "익명"; let room = prompt("방번호를 적어주세요", "") || "기본방"; socket.emit("newUser", name, room); }); socket.on("update", (data) => { console.log(`${data.name}:${data.message}`); let chat =..