35. 서비스 구축단계_투자비스 -4일차: dev / prod 분리 및 브렌치 merge

이미지
[오늘(목) 해야할 일] 1. 내일은 개발에 집중하기보다는, 현재까지의 작업 등을 전반적으로 정리하고 이후 단계들에 대해 구체화하는 작업을 하려한다. 2. 현재 production server에서만 모든 작업을 하고 있는데, dev와 prod 서버를 구분해야한다. 3. 현재까지의 작업일지를 정리하자. 빠르게 dev서버와 prod서버 구현만 진행하려 한다. 이후에 전반적인 점검 및 블로그 글쓰기를 할 예정이다. 1) 서브도메인 설정을 위해 A record 생성 2) Nginx 가상 호스트 설정 3) 개발환경 구성 (git clone, .env 구성, pm2 설정) 4) Github 배포 워크플로우 설정     - 개발 브랜치 관리 5) Dev용 SSL인증서 발급 (이 과정에서 오래걸림. Nginx에서 HTTPS 쪽을 모두 주석처리 해야했음.) 6) production 서버와의 충돌을 피하기 위해 server_name 구분 진행 7) backend/server.js 상에서 CORS에 dev용 서버 도메인을 origin으로 허용해야함. 최종적으로 dev와 prod 서버 모두 live되었다. 8) develop branch에 최신화되어 있는 코드들을 main branch에서 병합     - 서버에 git fetch origin을 통해 develop branch를 가져옴. 이후에 merge     - Github 사이트에서 pull request로도 진행 (일반적으로 회사에서 사용하는 방식) 9) 개발버전에서 테스트해보니 마이크 인식에 문제가 있어서 코드를 개선하였다. (현재는 개발 브렌치에만 적용한 상태) [오답노트] - 서버에서 유저를 각각 다르게 로그인하여 git pull 을 해오면, 각각의 root폴더가 다르게 추가된다는 것을 알게 되었다. 따라서 작업 시에는 root 유저가 아닌 일반 사용자로 작업하여 일관된 개발 환경을 구축하자. - 항상 서버에서 깃을 pull 하고 나면 frontend로 가서 npm ru...

34. 서비스 구축단계_투자비스 -3일차: 서버 띄우기 완료

이미지
[오늘(수) 해야할 일] 1. 서버에서  sudo nano /etc/nginx/sites-enabled/tojvs 에 접속해서 443번 주석처리한 것 없애기 2. 서버에서 3000 포트로 접속하는 것 확인 후 필요한 디버깅하기 어제(화) 저녁 중에 Claude를 통해 전체 코드를 점검 요청하기 위해서, git repository를 private에서 public으로 전환하였다. 또한 Claude 상에 github의 MCP Server를 추가함으로써 나의 최신 git 저장소를 검토하고 수정사항들을 Claude가 직접 push 할 수 있도록 했다. 사무실에 와서 어제 Claude가 업데이트해놓은 git을 로컬과 서버에 각각 pull하여 최신화했다. 이후에 클로드의 가이드라인에 따라서 하나씩 아래 작업들을 하고 있다.  🔄 배포 순서 서버에 코드 배포 환경변수 설정 (.env) 의존성 설치 및 빌드 PM2로 백엔드 시작 Nginx 설정 SSL 인증서 설정 n8n 워크플로우 설정 테스트 드.디.어. 화면이 출력되었다. 물론 아직 로그인은 되지 않는다. 그러나 외부 브라우저에서 접속이 가능한 상태가 되었다는 것만으로도 감격스럽다. 이후에 로그인과 회원가입, 마이크 음성인식 기능까지 모두 동작되도록 설정을 완료했다. 이제 이렇게 입력받은 사용자의 인풋을 기반으로 n8n 워크플로우에서 뒷단을 처리하고, 해당 값을 다시 웹 클라이언트로 제공하여 websocket을 사용하여 실시간으로 요청 화면을 보여주도록 구현하면 1차 mvp 제작이 끝난다. 아래와 같이 n8n 웹 훅에서도 정상적으로 값을 입력받고 있음을 확인할 수 있다. (n8n워크플로우 구현은 아직 개발중) [내일(목) 해야할 일] 1. 내일은 개발에 집중하기보다는, 현재까지의 작업 등을 전반적으로 정리하고 이후 단계들에 대해 구체화하는 작업을 하려한다. 2. 현재 production server에서만 모든 작업을 하고 있는데, dev와 prod 서버를 구분해야한다. 3. 현재까지의 작업...

33. 서비스 구축단계_투자비스 -2일차

이미지
 [오늘(화)의 과제] 1. 아이맥의 문서들을 한 차례 점검하고, 깃으로 푸쉬한 후에 가상서버에서 clone해야함. 2. 그리고 이후 test들을 진행해야한다. 아이맥에 있는 로컬 문서들을 git으로 푸쉬하는 과정에서, 보안적으로 민감한 사항들이 그대로 업데이트된 것을 확인하고 곧바로 git repository를 삭제하였다. 새로운 git 저장소를 만들고, 로컬에서의 연결 또한 새로운 저장소로 다시 진행하였다. 새로 생성된 git 저장소에 로컬 파일들을 push하고 가상서버 콘솔에서 다시 pull 을 진행했다. setup.sh를 실행하기 위해서도 계정생성 및 .env 파일 세팅 등 여러 절차들이 있었다. 드디어 setup.sh를 통해 가상서버에서 동작을 준비하는 모습. 한 번도 디버깅을 하지 않은 상태라서, 한번에 작동할리는 만무하지만 그래도 이렇게 첫 시도를 한 것에 크게 만족한다. setup.sh 시도 중 두 가지의 사소한 오류들 (index.html을 public폴더로 옮겨놓지 않음. App.css가 필요하지 않은데 App.js에서 import 명령어가 잘못 들어가 있었음.)을 수정한 후에 마침내 모두 설치가 완료되었다. 이렇게 설치 스크립트를 완료했음에도 불구하고 :3000 포트로 접속이 되지 않는다. 이런저런 해결책들을 찾아보려 했지만 잘 되지 않았다. 그래서 우선 Nginx 설치와 SSH 인증서, 도메인 연결 등의 부가적인 셋업을 진행하려 한다. Nginx 설치를 마무리하였고, SSH 인증서 다운로드 및 도메인 연결도 완료하였다. [내일(수) 해야할 일] 1. 서버에서  sudo nano /etc/nginx/sites-enabled/tojvs 에 접속해서 443번 주석처리한 것 없애기 2. 서버에서 3000 포트로 접속하는 것 확인 후 필요한 디버깅하기

32. 서비스 구축단계_투자비스 -1일차

이미지
기존에 진행하던 세컨브레인 프로젝트는 현재 4가지 기능(일정, 노트관리, 할일관리, 리마인더)을 구현하고 활용 중에 있고, 그 외 멘토 기능들은 추후 다시 작업하는 것으로 미뤄두기로 하였다. 이번 서비스는 단타매매 사용자를 위한 ai 에이전트 활용 서비스로서 클로드의 도움을 많이 받아 구현할 예정이다.  오늘의 목표는  1. digital ocean을 통해 가상서버 세팅     - 디지털오션은 간단한 서비스 제작에 있어서는 AWS보다 더 간편하게 접근 가능하다.     - 또한 현재 200불을 크래딧으로 제공하는 프로모션 진행 중이라 금전적으로 유리하다. (2개월 간 사용)     - 해당 링크로 접속해야 200불 크래딧을 받을 수 있다. ( https://m.do.co/c/83fef74c6a45 )     - 이로써 두 달 간은 서버 비용의 부담이 사라진다. 2. 클로드가 제안해준 프론트앤드 파일 업로드 및 로컬호스트에서 테스트 3. 클로드가 제안해준 n8n 워크플로우 생성 후 동작 테스트 1-1) 우선 가상서버를 세팅한다. 1-2) 이후 대시보드에서 firewall 설정완료. 1-3) SSH 기본 설정완료.  # SSH 접속 ssh root@your_droplet_ip # 시스템 업데이트 apt update && apt upgrade -y # 필수 패키지 설치 apt install -y curl wget git build-essential nginx certbot python3-certbot-nginx # Node.js 18.x 설치 curl -fsSL https://deb.nodesource.com/setup_18.x | bash - apt install -y nodejs # PM2 설치 (프로세스 관리) npm install -g pm2 # Docker 설치 (n8n용) curl -fsSL https://get.docker.com | sh # ...

31. 서비스 구축단계_세컨브레인 -2,3일차: 구현 (2. 채널연결 완료) -

이미지
초기 기획을 마무리하였고, 이제 실제 셀프 호스팅된 n8n 상에 필요한 3rd Party 채널들을 연동한다. 1. 카카오톡 (메시지 발송) 2. 슬랙 (생성, 읽기) 3. 텔레그램 (메시지 발송) 4. 노션 (생성, 조회, 수정) 5. 구글캘린더 (생성, 조회, 수정) 1. 우선 '카카오톡 나에게 메시지 발송' 기능의 경우, 사전에 만들어서 테스트했다. 2. 두번째로 슬랙을 연동한다.  우선 기능별로 결과 메시지를 받을 수 있는 슬랙 방을 만든다. 3-2) 메모관리 LOG 3-4) 아이디어 디벨롭 공간 3-5) 사업기획안 3-6) 가정멘토 3-7) 식단멘토  3-8) 자산멘토   n8n에서 slack credential을 생성 후 연동하였고, slack trigger 노드 생성 후 webhook URL을 슬랙의 event subscription에 추가하였다. 또한 슬랙에서 API 및 Bot에게 필요한 권한을 부여하였다. 그 결과, 아래와 같이 슬랙 내 특정 채널에서 메시지를 발송하면 n8n의 trigger 노드에 인풋이 정상적으로 입력되는 것을 확인할 수 있다. n8n에서 슬랙으로 메시지 발송하는 부분도 테스트했다. "Automated with this n8n workflow"부분도 삭제하여 깔끔하게 메시지가 전송되도록 했다. 각 채널별로 고유한 ID가 존재하기 때문에, 추후 워크플로우 상에서 그때 그때 사용하려는 target 채널 ID를 가져와서 메시지가 발송되도록 할 것이다. 3. 세번째로 '텔레그램'으로 메시지를 발송하도록 한다. 텔레그램은 일정관리 결과 안내 및 리마인더 기능으로만 사용하려고 하기 때문에, n8n에서 텔레그램으로 메시지 발송하는 기능만 구현하면 된다. 카카오톡 메시지 발송으로 구현해도 되는데, 이렇게 되면 "나에게 발송"만 가능하다보니 카톡 알림이 오지 않는 문제가 있었다. 아래와 같이 텔레그램 노드를 만들고 botfather에서 newbot을 생성하여 api key 생성 ...

31. 서비스 구축단계_세컨브레인 -2일차: 계획-

이미지
현재의 삶은 주어진 과제가 없으며 내가 어디에 우선순위를 두느냐에 따라 곧장 실행할 수 있는 삶이다. 따라서 계획이 없다면 그 때 그 때의 감정과 선호에 따라 시간을 보낸다. 반면 계획을 둔다면, 비록 감정과 선호가 이끌리는 것이 있다 하더라도, 계획한 것에 가중치가 더 높아지기 때문에, 적어도 그 계획의 가중치를 넘지 않는 감정과 신호는 걸러낼 수 있다. 따라서 계획이 중요하다. 지난 1일차 포스팅을 통해, 이번 Toy Project의 아웃풋의 대략을 정리했다. 세부 기획으로 가면서 계속 변경되겠지만 큰 틀에서 뭘하려는 것인지 스스로 정리할 수 있는 기회가 되었다. 이번 2일차 포스팅에서는 어떤 타임라인과 WBS를 가지고 이번 Toy Project를 완성할 것인지 생각해본다. 스콥은 한없이 늘어날 수 있기 때문에, 비용(Cost) & 품질(Scope) & 시간(Time) 의 프로젝트 3대 제약 요소 중에서 시간을 가장 중요한 제약으로 보고 이번 프로덕트를 구현하고자 한다. 스스로에게 부여하는 프로젝트 완성 시간은 "15일"이다. 주말을 제외한 실제 작업일을 기준으로 한다. 품질로 보자면, 주요한 기능만 구현되어 의도한대로 동작하면 요구사항을 충족한 것으로 보겠다. 아래 항목에서 보자면 우선순위에 따라, "일정관리, 리마인더 관리, 메모관리, 아이디어 디벨롭, 사업기획 조언, 자산관리 조언, 가정 조언, 식단조언" 기능 1차로 완성하는 것을 목표로 한다. 비용의 경우 이런 저런 서비스 구독이 필요할 수 있겠으나 큰 규모가 아니라고 판단되기 때문에 주요하게 보지 않겠다. 다만 비용이 다소 비싸더라도 Month to Month로 결제를 진행하겠다. 이번 15일치 프로젝트는 최소한으로 동작하는 제품(mvp)을 1차적으로 만든다는 것에 목적이 있다. 이후에 기존 기능을 개선하는 프로젝트를 '후순위의 기능들을 구현 (투자조언, 커리어조언, 뉴스/정보 관리, 언어학습 및 토론)'하는 목적으로 재차 진행하고자...

30. 서비스 구축단계_ 세컨브레인 -1일차-

이미지
이제까지 학습을 했다면 이제는 머릿 속에 있는 서비스를 구현하는 단계다. 아직까지는 toy project 단계로서 현재까지 배운 multi agent 의 개념과 n8n, 그리고 mcp 의 다양한 가능성들을 테스트해보려 한다.  첫번째 toy project는 second brain 구축이다. 단순히 ai 기반의 비서 또는 에이전트와는 다르게, 현재 내 삶의 많은 부분에서 ai의 도움을 받고자 한다. 가장 간단하게는 일정관리, 메모관리, 리마인더 기능과 같은 비서 기능부터 시작하여, 떠오르는 아이디어를 디벨롭하는 과정, 사업을 구체적으로 기획하는 과정 등 다음 사업을 cooking 하는 영역에서 AI의 도움을 받겠다. 또한 영역별로 가상의 멘토를 설정하여 지속적으로 조언을 구하려 한다. [가상의 멘토들]  (1) 먼저는 커리어 조언자: 현재 머릿속에 있는 40세, 50세, 60세 등의 계획에 대해 상세히 알려주고 이를 기반으로 매 순간의 결정들이 내 삶의 방향성과 일치되는지, 해당 시점의 선택에 있어 어떠한 점을 고려해야하는지 등에 대해 조언을 얻으려 한다.   (2) 두번째로 투자 조언자 : 육아휴직 이후로 주식투자를 지속하고 있는데, 때때로 수익과 손실을 반복하고 있다. 매매 과정에서 배우는 부분도 많이 있지만, 전반적으로 주식 투자금액이 현재 나의 자금 상황에 비해 지나치게 높다는 부분과 투자의 빈도가 매우 잦다는 점, 그리고 경제의 거시적인 측면만으로 투자의사결정을 내리는 반면 종목이나 산업군에 대한 분석이 결여되어 되어있다는 단점이 있다. 현재까지의 투자 경험에서의 장점은 극대화하면서도 개인적인 단점을 수정해갈 수 있도록 도움을 받고 싶다.   (3) 세번째는 관계에 관한 조언자: 먼저 아내와의 관계에서 도움을 받을 조언자, 자녀의 양육에 관하여 식사, 놀이, 대화 등에 관해 좋은 질문 등으로 넛지해줄 조언자, 그리고 전반적인 인간관계에서 도움받을 조언자를 얻고자 한다.  (4) 네번째는 토론 주최자...