백엔드감자's Today I Learned : 내 프로젝트 첫 ERD 설계.

BE_{Potato.}·2023년 2월 14일
0
post-thumbnail

🧐 당근쉬알 ERD 설계.

내가 만들 프로젝트 '당근쉬알'의 DB설계를 해보았다.
Lucid chart라는 웹사이트를 알게 되어 여기에 작성을 해보았는데 단점이 너무 연결이 지저분하게 되어 알아보기가 힘들다. 타입지정도 힘든 것도 있다.
우선 ERD Cloud로 옮겨서 다시 작성한 후에 ERD에 대한 설명과 각 테이블, 그리고 서비스에 대한 설명들까지 해보려고한다.

'당근쉬알' 1차 버전. 연결이 너무 지저분하게 보인다. 변경이 필요해 보이고 테이블 구성에 초점을 둬야할 것 같다.

ERD-Cloud 버전으로 다시 그린 버전. 좀 더 보기가 편해서 좋다. 확대해서 부분별로 살펴보자.

먼저 회원 부분. 회원의 사는 지역을 빼서 동 별로 알바를 찾을 수 있게 했고, 프로필 이미지도 테이블 하나로 뺐다. 회원별로 동 하나를 설정하기 때문에 1대1로 설정했고, 회원 프로필 이미지도 한 회원 당 사진 하나라서 1대1로 했다. 실명은 쓰지 않고 닉네임제로 했다. 사진은 GCP로 저장하기 때문에 url를 따로 뺐다. 또한 회원 평가를 넣어 이 사람의 알바 평점을 바로 확인할 수 있게 했다.

두번쩨로는 알바 후 알바생 평가부분. 우선 체크항목을 만들어 해당되는 선택지를 체크하는 식으로 뺐고, 상세 리뷰내용을 쓸 수 있게 뺐다. 체크항목은 여러개가 해당될 수 있어 1대다로 뺐다.

다음은 알바항목. 알바 사례금과 알바 처리상태로 이미 완료된 알바인지 아직 모집 중인지를 확인할 수 있게 했고, 선택지로 enum 타입을 넣었다. 그리고 시/군/구/동으로 회원이 선택한 지역의 알바를 모아보기 쉽게 주소를 시/군/구/동 주소와 상세주소로 나누었고, 알바 시작시간을 넣었다. 그리고 알바를 카테고리 별로 나누었다.

마지막 채팅과 알림기능. 내 서비스의 중요한 부분이라 생각한다. 채팅으로 알바생과 알바고용인과의 대화로 알바를 조율할 수 있고, 채팅메세지 테이블에 메세지 읽음여부를 넣어 의사소통이 원활할 수 있도록 했다. 그리고 알림 기능으로 회원이 원하는 키워드를 등록해 그 키워드가 포함된 제목의 알바가 뜰 때에 회원에게 알려주는 편리한 기능을 넣었다.

아직 완벽한 DB 테이블은 아니지만 계속 프로젝트를 만들어가면서 수정해야겠다. 당근마켓 클론 ERD를 참고했고, 채팅기능과 알림기능이 가장 난해했는데 이 부분에서 도움을 많이 받았다.

https://www.erdcloud.com/d/XqucidWnYXghPyX67
=> 내 ERD 링크.


'당근쉬알'의 탄생배경과 기획의도?

프로젝트 주제선정에 있어 내가 당장 필요한 서비스를 만드는 것이 가장 흥미롭지 않을까에서 시작했다. 전의 직장을 나와서 지금 취준생 입장에서는 공부도 하고 금전적으로 여유롭지 않은 상태이다. 이럴 때 내 주변에서 몇시간만 투자해서 점심저녁값을 벌 수 있다면 얼마나 매력적일까.
그리고 우리집은 편의점을 하는데 가끔씩 사람이 필요한 시간이 있다. 하루의 반나절만 편의점을 봐주는 사람이 있다면. 자영업자와 취준생, 그리고 모든 일에서 약간의 일손을 필요로 하는 사람들 등등.
이들을 위해 서비스가 탄생했다.

서비스는

  1. 알바를 하고 싶은 사람이 본인 동네를 설정한다.
  2. 일손을 필요로 하는 고용자가 알바 모집글을 올린다.
  3. 알바를 원하는 사람이 모집글을 보고 채팅방을 만들어 채팅을 보낸다.
  4. 알바 조율 후 알바를 하고 고용자가 알바생에 대한 후기를 쓴다.
  5. 알바생 후기가 알바를 한 회원정보에 반영된다.
  6. 알바를 하고 싶은 분야의 키워드 작성 후, 알림을 받아 글을 보고 수락해 수행한다.

이런 식으로 운영이 된다.

이제 데이터베이스 설계도 했으니 API를 만들기 시작해야겠다.


📝 백엔드직무 채용공고에 대한 조사.

내가 아는 개발자 관련 채용플랫폼 중 가장 유명한 '원티드'에서 Node.js 파트로 인기순 상위 20개 기업의 채용공고 자격요건을 분석하는 시간을 가졌다.

<블라인드 자격요건>
• 경력이 3년 이상 혹은 이에 준하는 실력을 가지신 분 
• 웹 개발 환경과 구조에 대한 기본적인 이해를 갖추신 분
• REST API 설계 및 운영을 해보신 분
• Script Language (Node.js, Python, Ruby, PHP 등) 관련 개발에 익숙하고, 최소 하나 이상은 능숙하신 분
• Web MVVM 개발 경험이 있으신 분
• MySQL에 익숙하시거나 혹은 한 가지 이상의 RDBMS 사용 경험이 있으신 분
• AWS 사용 경험이 있으신 분
• 다음 중 7개 이상에 대해서 경험이 있으신 분 (Node.js, Vue.js, PHP, MySQL, Linux, Redis, ElasticSearch, Couchbase, (Web)Socket, PubSub, AWS, Docker, Shell, Kafka, Firebase)
• Git을 활용한 협업에 익숙하신 분
• 병역의무를 마치셨거나 해당 사항이 없어 근무에 문제가 없으신 분

<테이블링 자격요건>
• 백엔드 개발에 대한 이해
• 클라우드 서비스 사용 경험
• RDBMS(MySQL) 및 NoSQL 개발 경험
• HTTP RESTful API 설계 및 서비스 개발 경험
• 주도적인 프로젝트 진행
• 자신의 성장과 서비스 개선을 위해 꾸준히 노력하는 분
• 팀 단위의 협업을 중시하시는 분
• 학력 및 전공 무관
(사용 기술)
• NodeJs(Typescript)
• AWS
• Mysql/DynamoDB/Redis/MongoDB
• Elastic Search

<위버 자격요건>
• Node.js, Typescript의 능숙한 사용 능력
• Docker 및 Kubernetes 를 활용한 서비스 개발, 운영 경험
• 프로덕션 환경에서 서비스 개선 경험

<넥슨 자격요건>
• Java, Node.js 중 하나 이상의 언어 기반 프로그래밍 경험이 있으신 분
• 하나 이상의 프레임워크(Spring, Express.js, .NET 등)에 대한 깊은 이해도 있으신 분
• RESTful API에 대한 이해를 바탕으로 설계 및 구현 가능하신 분
• Docker등 Container 환경에서의 개발 경험이 있으신 분
• 퍼블릭 클라우드 기반의 개발 경험이 있으신 분

<아데나 자격요건>
• 영어 커뮤니케이션 능숙 - 해외 파트너 기술진들과 커뮤니케이션이 많음
• Typescript 사용 경험 
• MySQL, MariaDB 등 관계형 DBMS 사용 경험
• RESTful API 개발 경험
• Micro Service Architecture에 대한 이해

<오일나우 자격요건>
• Node.js를 활용한 백엔드 개발에 경험이 있으신 분
• Javascript 생태계에 관심이 많으신 분
• 효율적인 트래픽 처리를 위한 아키텍처 구성에 대한 관심이 많으신 분
• 학습과 성장에 목말라 있으며, 이를 실천으로 옮기는 분
• 비지니스 요구사항을 빠르게 이해하고 코드로 재해석 가능하신 분
• 논리적인 사고로 오일나우 구성원과 원활한 커뮤니케이션 가능하신 분

<모두의 회계 자격요건>
• 1년 이상 혹은 그에 준하는 실무 경험
• 타입언어 (TypeScript 등) 경험이 있으신 분
• Slack, Jira등 보편적인 커뮤니케이션 도구로 소통하는데 어려움이 없으신 분
• 백엔드 환경에서 ORM 사용 경험이 있으시며, DB에 익숙하신 분
• AWS 사용 및 클라우드 상에서 배포해 보신 경험
• RDB에 대한 충분한 이해

<무신사 자격요건>
• 5년 이상의 서비스 개발/운영 경력이 있으신 분
• Node.js with typescript, Sequelize / TypeORM or python, FastAPI, sqlalchemy 개발에 익숙하신 분
• 새로운 기술에 대한 호기심을 가지고 적용하는데 재미를 느끼시는 분
• 서로 다름을 인정하고 존중하며, 유연한 의사소통이 가능하신 분
• AWS 기반의 클라우드 환경에서 서비스 개발/운영 경험이 있으신 분

<클라썸 자격요건>
- 2년 이상의 백엔드 개발 경력이 있거나 그에 준하는 실력을 갖추신 분 (경력 지원자의 경우)
- AWS/GCP를 통해 인프라 구축한 경험이 있는 분
- Node.js와 JavaScript 또는 TypeScript 에 대한 이해를 갖춘 분
- 단위테스트, 기능테스트, 종단테스트, 빌드 자동화, 지속적 통합의 경험이 있는 분
- RDBMS, NoSQL에 대한 이해를 갖춘 분
- 자유로운 근무환경에서 스스로의 목표와 일정을 관리할 수 있는 분
- 배움에 대한 열정을 갖고, 지속적이고 효과적으로 피드백을 주고 받는 분
- 맡은 작업에 대한 오너십을 갖고, 이를 완성시키는 일에 열정이 있는 분

<넥슨 자격요건>
• Node.js 기반 서버 개발 경험
• 긍정적인 성향 및 형상 관리 시스템을 사용한 협업 능력
• HTTP(RESTful) API에 대한 설계 및 개발 능력
• AWS 기반 서비스 구축 및 운영 경험
• 원활한 커뮤니케이션 능력

<위버 자격요건>
• [3년 이상]의 프론트엔드 개발 경력 혹은 이에 준하는 구현 능력
• React, Next.js 를 이용한 웹사이트 개발 경험
• 상태 관리 라이브러리 사용 경험
• 렌더링 최적화에 대한 이해
• Webpack 등 번들러 사용 경험

<아파트멘터리 자격요건>
• 경력 3년이상
• Node.js을 활용한 개발 경험
• GraphQL을 활용한 개발 경험
• RDBMS에 대한 전반적인 지식

<코빗 자격요건>
• Node.js 백엔드 개발 3년 이상의 경험
• Typescript/Javascript(ES6)에 대한 지식
• Nest.js/Express.js 프레임워크 개발 경험 
• AWS, GCP 등 클라우드 컴퓨팅 서비스 개발/운영 경험
• 견고하고 확장 가능하며 안전한 코드 설계 관심 
• 거래소 서비스에 대한 관심과 관련 업무 경험

<마켓보로 자격요건>
• B2B 식자재 오픈 마켓 백엔드 개발
• 정산/회계 백엔드 통합 개발
• 결제/정산/세금 등의 백엔드 로직 개발

<백신패스 자격요건>
- 5년 이상 소프트웨어 개발 경력을 보유하신 분
- 3년 이상 Node.js 개발 경험이 있으신 분 (ES6+, TypeScript 사용)
- RESTful API 설계/개발 경험이 있으신 분
- RDBMS 또는 NoSQL 설계/개발 경험이 있으신 분

<띵크스플로우 자격요건>
• Node.js 개발 경험
• 데이터베이스(MySQL 등) 구조 설계 및 쿼리 작성 경험
• HTTP 프로토콜 기반 웹 어플리케이션 작성 경험
• git을 이용한 버전 관리 경험
• Computer Science(운영체제 및 네트워크, 자료구조, 데이터베이스)에 대한 이해

<세탁특공대 자격요건>
• Node.js 혹은 Spring Boot, Spring Cloud 기반 개발 경험이 있는 분
• AWS 클라우드 기반 서비스 개발/운영 경험이 있는 분
• RDBMS, NoSQL, Redis 경험이 있는 분
• 논리적이고 체계적이며, 문제해결 능력을 보유한 분
• 서비스 가용성과 확장성을 고려한 시스템 아키텍처 설계 및 개발 능력을 보유한 분
• 적극적인 협업을 통해 함께 성장하길 원하는 분 우대
• 변화를 두려워하지 않고 새로운 기술을 적극적으로 학습하며 꾸준히 성장할 수 있는 분

<불카누스 자격요건>
• Node.js 실무 개발 경력자
• Cloud 환경(AWS, Azure 등) 경험이 있으신 분
• RDB, MySQL, MongoDB 사용 경험이 있으신 분
• Web(http 프로토콜, 헤더, 캐시, 웹소켓, 전반적인 동작과정)에 관한 이해가 있으신 분

<넥슨 자격요건>
• Node.js, Java, Go, C++ 중 1개 이상의 프로그래밍 경험
• HTTP API 설계 및 개발 경험

<팬마음 자격요건>
• 경력: 프레임워크를 사용해 개발한 경력 2년 이상 혹은 그에 준하는 경력
• Node.js를 이용한 웹서비스 및 API서버 개발 능력
• 프로그래머라는 직종에 대하여 언제나 즐기고 자부심을 가지는 분

Typescript, MySQL, Node.js, AWS, RESTful API, Docker, Elastic search,Redis, ORM 등이 눈에 띄었고 컴공 기본지식들에 대한 것도 눈에 띄었다.
이 쪽을 중점적으로 공부해나가야겠다.

=> rest api. node.js. docker. aws. typescript. mysql,Elastic search,Redis, ORM
cs(데이터베이스,자료구조와 알고리즘, 네트워크. 운영체제).
이것들을 공부!

profile
항상 '기본'을 중요시하는 예비 백엔드개발자입니다!

0개의 댓글