본문 바로가기

분류 전체보기209

TypeScript + Node.js + Express 에서 프로젝트 시작하기 0. 프로젝트 폴더 생성 나의 프로젝트 폴더 구조는 다음과 같다. 1. 패키치 설치 나는 package manager로 yarn을 사용했다. 내 프로젝트 폴더 구조 기준으로 back 폴더에서 다음 명령어를 실행했다. 1) yarn 초기화 $ yarn init 2) 필요한 패키치 설치 typescript 전역으로 설치 yarn add typescript -g $ yarn add ts-node nodemon typescript @types/express @types/node nodemon --dev $ yarn add express typescript는 node에서 바로 실행되지 않기 때문에 tsc를 사용해서 javascript로 변환한 다음 실행된다. 프로덕션 환경에 올리기 위해서는 모든 파일.. 2022. 6. 6.
나 정윤쓰, 개발은 처음인데 우연히 보게 된 CESCO Q&A CESCO Q&A 장식품해충 중에 화랑곡나방이 있습니다. 요 녀석은 환경조건(먹이, 온도 등)에 따라 유충기간을 2주에서 300일까지 조절이 가능하며 성충으로 우화한 이후에는 다른 녀석들과 동일한 수명을 지닙니다. 지금은 남들보다 조금 늦을 수 있지만 그 이후는 동일하거나 더 나을 수 있다는 것을 반드시 기억하시기 바랍니다. 📌 유튜브 '널널한 개발자 TV' https://youtu.be/8MbXyX3rMfs 유튜브: 널널한 개발자 TV [ 나 정윤쓰, 개발은 처음인데 ] 올해 처음 개발을 시작하고 목표가 있다는 게 늘 재밌고 행복했다. 내 길을 걷고 있고 나만의 이야기를 써내려 간다는 건 참 즐거운 일이다. 하지만 가끔 뛰어난 (개발) 실력을 가진 사람들과 많은 기술이.. 2022. 6. 6.
[인공지능 웹 서비스 프로젝트] 4~5일 차 회고 📖 2022년 06월 03일 ~ 6월 04일 ✔️ 오늘 내가 한 일 oracle cloud에 mysql DB 서버 구축 node에서 DB 연결 swagger 코드 기획 회의 폭풍 ERD 설계 💡 TIL ( Today I Learned ) [ 다른 사이트의 의존성은 낮추자 ] 우리 서비스에서 카카오톡 연동이 필요한 기능이 있어 처음 설계는 카카오톡 로그인만 가능하도록 기획했다. 하지만 카카오톡이 망하거나? 카카오톡이 점검을 한다면 그 서비스의 문제가 우리 서비스까지 영향을 미친다. 따라서 의존성을 낮추도록 사이트 자체 로그인도 다시 넣기로 결정했다. [ DB 구축 시 고려할 점 ] 1. 서비스 확장성을 고려할 것 ERD 설계하면서 코치님 덕분에 더 깊게 생각해볼 수 있었다. DB 구축을 할 때 백엔드 개발.. 2022. 6. 5.
Swagger를 활용한 API 명세와 개발 협업 2탄 0. 개요 💡 swagger를 명세하는 방법은 다양하다. 모듈을 설치해서 각각의 router 파일 상단에 직접 명세 yaml 파일이나 json 파일 하나에 모든 API 명세를 하는 방법 [ 이전 프로젝트에서 2번 방식을 선택한 이유 ] 개인적으로 라우터가 지저분해지는 것을 정말 싫어한다. 1번 방식은 코드가 복잡해지고 명세와 router 코드가 함께 있어 코드 가독성이 떨어졌다. 그래서 지난 프로젝트에서는 하나의 파일에 모든 API를 설계하는 방식으로 협업을 했다. [ 아놔.. 어디 괄호가 잘못된거야? ] 일단 yaml 파일, json 파일 두가지 모두 들여쓰기 또는 괄호가 중요하다. 그런데 점점 API가 많아질수록 괄호나 들여쓰기 실수가 발생했을 때 오류를 찾는 과정이 정말 피곤했다.. (정말정말) 🤣.. 2022. 6. 4.
[인공지능 웹 서비스 프로젝트] 1~3일 차 회고 📖 2022년 05월 31일 ~ 6월 02일 ✔️ 오늘 내가 한 일 주제 브레인스토밍 가기획안 작성 주제 데이터셋 수집 주제 선정 💡 TIL ( Today I Learned ) 1) 기획이란 3일에 걸쳐 진행된 기획 회의가 마무리 되었다. 기획에 있어 유저 입장보다는 개발자 입장에서 고민을 했기 때문에 더 좋은 서비스 기획하는데 많은 시간이 소요됐다. google docs를 통해 각자 생각해온 아이디어를 12가지로 추렸고 함께 한계점과 서비스 방향성, 데이터셋 유무 등 고려하여 내부적으로 투표하며 기획 선정했다. 💁‍♀️ 오늘 느낀 점 조금 오래 걸리더라도 기획, 설계는 확실하게 잡고 가는게 맞다고 생각한다. 그래서 개발 일정이 예상보다 늦어졌지만 구체적인 기획이 나왔기 때문에 이제 데이터베이스를 구축하.. 2022. 6. 3.
[프로그래밍 언어] Typescript 0. 사용 목적 앞선 두 번의 프로젝트에서는 Javascript로 개발을 했다. JS로 개발 코드 작성 과정에서 오류가 발생해 디버깅해보니 JS type 문제였다. Javascript는 동적 언어로 런타임에 타입을 결정하고 오류를 발견한다. 그래서 typescript로 작성을 해보니 오류가 사라졌다. (단순 체크) JS는 너무 관대하여 오류가 찾기 어렵다. TypeScript는 정적 타입을 지원하므로 컴파일 단계에서 오류를 포착할 수 있는 장점이 생긴다. 명시적인 타입 지정은 개발자의 의도를 명확하게 코드로 기술할 수 있고, 코드의 가독성을 높이고 예측할 수 있게 하며 디버깅이 쉬워진다. 자 이제 간단하게 TS에 대해서 정리해보자. 👉 Typescript 튜토리얼 보러가기 1. What is TypeSc.. 2022. 6. 2.
[엘리스AI트랙] 2차 프로젝트 회고 🍸저쪽 손님께서 보내신 겁니다. 칵린이를 위한 칵테일 소개 및 추천 서비스 🚩프로젝트 목표: 칵테일 입문자를 위한 인기 있는 칵테일 정보 제공 및 자신만의 레시피 공유, 재밌는 칵테일 컨텐츠를 통해 칵테일의 진입장벽을 낮추고자 합니다. https://github.com/ParkJungYoon/cocktailWebService GitHub - ParkJungYoon/cocktailWebService: 칵린이들을 위한 칵테일 소개 및 추천 서비스 🍸 칵린이들을 위한 칵테일 소개 및 추천 서비스 🍸. Contribute to ParkJungYoon/cocktailWebService development by creating an account on GitHub. github.com ⚙️ 기술 스택 Node.j.. 2022. 5. 30.
[MongoDB] mongoose 트랜잭션 우선 트랜잭션에 대한 자세한 개념 공부 이후 실제 코드로 실습을 진행했다. 개념 포스팅 보러가기 👉[Database] 트랜잭션과 무결성·정합성, 면접 질문 트랜잭션 적용(좋아요 기능)한 프로젝트 보러가기 👉 GitHub Source 1. 사용 목적 '좋아요' 기능을 개발할 때 여러 유저가 동시에 좋아요를 누르는 경우가 발생한다. 이때 데이터 정합성 보장을 목적으로 모두 완벽하게 처리(Commit)하거나 또는 처리하지 못할 경우에는 원 상태로 복구(Rollback)해서 작업의 일부만 적용되는 현상이 발생하지 않게 구현하고자 했다. 2. 구현 index.js const db = mongoose.connection; export { db } like.js - 좋아요 스키마 const likeSchema = n.. 2022. 5. 28.
[CI/CD][#2] Jenkins를 활용한 자동화 파이프라인 구축 본격적으로 Jenkins로 CI/CD 파이프라인을 구축해보자. 📌 지난 포스팅 [CI/CD][#0] Docker, K8s, CI/CD 활용해 무중단 배포하기 - Intro [CI/CD][#1] EC2(ubuntu)에 Jenkins 설치하기 1. Jenkins에 Git 연결 'Dashboard > Jenkins 관리 > Security' 로 들어가 'Manage Credentials'를 선택한다. 그 다음 'Jenkins > Global credentials'를 차례로 누른다. 그 다음 'Add Credentials'를 클릭해서 추가해준다. 1) Git에서 Access Token 발급 나는 기존에 발급받은 토큰을 그대로 사용했다. username: Github 아이디 password: GitHub 토큰 i.. 2022. 5. 24.
[CI/CD][#1] EC2(ubuntu)에 Jenkins 설치하기 0. 개요 우선 많은 CI,CD 중 Jenkins를 사용한 이유는 다음과 같다. 무료 사용 방대한 양의 플로그인 다양한 적용사례 및 풍부한 레퍼런스 ✔️ tool 종류 더보기 Jenkins : Buildkite GitHub Actions GitLab CI/CD CircleCI Argo CD 📌 지난 포스팅 [CI/CD][#0] Docker, K8s, CI/CD 활용해 무중단 배포하기 - Intro 1. EC2(ubuntu)에 Jenkins 설치하기 Window인 로컬에서 하는 것보다 EC2 인스턴스에서 실습하는 것이 용이할 것이라 판단하여 EC2 인스턴스 위에 Jenkins를 설치해보자. 📌 설치 관련 Jenkins 공식문서 1) Jenkins 서버를 위한 인스턴스 생성 Jenkins 서버를 위한 인스턴.. 2022. 5. 23.
[CS] 네트워크 0. 용어 1) Host : 네트워크에 연결된 컴퓨터 Switch: 네트워크 자체를 이루는 컴퓨터 경로: Router, 보안: F/W(방화벽), IPS End-point: 네트워크 이용 주체 Peer, Server, Client 2) Internet : Router + DNS 가장 중요한 구성체 : 전 세계에 걸쳐 파일 전송 등의 데이터 통신 서비스를 받을 수 있는 컴퓨터 네트워크 시스템 3) 대역폭 4) 레이턴시 5) 혼잡과 큐 대기 1. OSI 7 Layer Layer 7 : 응용 계층(Application layer) 사용자와 가장 밀접한 계층으로 인터페이스 역할을 하는 계층 프로토콜로 Data가 어떤 용도로 사용될지는 APP이 결정한다. Ex) HTTP, SMTP, POP3, FTP 등 * HTT.. 2022. 5. 23.
[프로그래밍 언어] Ruby 0. Ruby 란? 일본 개발자 마츠모토 유키히로가 개발한 동적 객체 지향 스크립트 프로그래밍 언어이다. 1) 자유로운 형태 모든 행과 열에서 자유롭게 코드를 짤 수 있다. 하지만 코드의 가독성을 위해서 들여쓰기를 추천한다. 2) 대소문자 구분 Ruby 언어에서는 대소문자 구분이 중요하다. 3) 문자 구분 기호 Ruby에서는 코드의 줄바꿈으로 종결을 구분한다. 한 줄에 여러 코드를 작성할 때는 세미콜론(;)을 사용하자. 📒 Ruby 공식문서 ⚙️ Ruby 실행하기 1. Ruby 1) Block 블록이란 코드 덩어리라고 할 수 있다. ✔️ 구현 방법 (1) 중괄호 { puts "Hello, World" } (2) do ~ end do puts "Hello World" end 보통 멀티라인 작성시에는 do~.. 2022. 5. 21.
[TDD] 테스트 코드 작성 1. What is "Testing"? 제품 or 서비스의 품질을 확인 소프트웨어의 버그를 찾음 2. What is "TDD"? Test-driven development : 테스트 주도 개발 개발 (코드 작성)전 테스트 코드를 먼저 작성하는 방법이다. Why? 사용자 입장에서 코드 작성 모든 요구 사항(목표)에 대해 점검 시스템 전반적인 설계 향상 개발 집중력 향상 TDD 사이클 실패하는 테스트를 구현한다. 테스트가 성공하도록 프로덕션 코드를 구현한다. 프로덕션 코드와 테스트 코드를 리팩토링한다. 3. 단위 테스트(Unit Test) 단위 테스트는 개발자가 수행하고 자신이 개발 한 코드 단위를 테스트합니다. 2022. 5. 19.
[CI/CD][#1] CircleCI 를 활용한 자동화 파이프라인 구축 0. 실습을 위한 GitHub Repo 구성 2차 프로젝트의 back 코드만 가지고 실습을 위한 GitHub 레퍼지토리를 생성했다. 1. CircleCI 1) 접속하기 📌 CircleCI 홈페이지 바로가기 깃허브로 로그인을 한다. 로그인을 하면 CircleCI 콘솔에 접속할 수 있다. 이때 이미 ./circleci/config.yml 파일을 생성해뒀다면 Set up Project 버튼이 비활성화 되어 있을 것이다. 나는 'CircleCI-practice' 레포 옆의 Set up Project를 클릭했다. config.yml 파일을 선택하는 다양한 방법이 있는데 그 중에서 나는 Faster인 새로운 브렌치에 커밋하는 방법을 선택했다. Success라고 되면 완성된 것이다. 깃허브에 들어가보면 자동으로 co.. 2022. 5. 17.
[CI/CD][#0] Docker, K8s, CI/CD 활용해 무중단 배포하기 - Intro 0. 개요 👉 GitHub Repo 확인하기 지난 3주간 2차 웹서비스 프로젝트를 진행했다. 이때, 1차 프로젝트 이후 학습한 Docker를 사용하여 배포를 진행했다. 확실히 1차 때 배포보다 좀 더 편리해졌다. 하지만 여기서 멈추면 안돼! 여전히 불편한 점이 있다. 자동화! Docker를 사용하여 좀 더 배포 과정이 쉬워지기는 했지만 프로젝트 중간중간 소스코드가 업데이트 되면 내가 다시 수동으로 image를 새로 빌드하고 docker hub에 push하고 업데이트된 버전으로 다시 docker-compose를 띄웠다. 새로운 컨테이너를 올리기 위해 배포 과정을 중단해야했고 이 과정에서 나는 중단하지 않고 자동으로 release할 방법이 필요했다. 또한, 여러 명의 개발자가 작업을 집중해서 하다보면 많은 .. 2022. 5. 14.
반응형