전체 글

잘 하는 개발자로 성장 ⤴️⭐️ 영화, 책 리뷰 🍿📖 일상 기록 ☕🤳 생각 공유 🥚🤔
개발/잡동사니

[잡동사니] 윈도우 서버 원격 접속 nodejs 설치

윈도우 서버에 원격접속 하였을 때, 혹은 윈도우 OS환경에서 nodejs를 설치하는 방법에 대해서 알아보겠습니다. nodejs 홈페이지에 들어가서 LST 버전을 설치해 줍니다. https://nodejs.org/en Node.js — Run JavaScript EverywhereNode.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.nodejs.org 여기서 주의할 점은 설치한 경로를 확인해주는 것입니다. 이외에는 개요에 맞게 설치하면 될것 같습니다. 한국어 기준 환경 변수에 접속하고, 영어 기준 environment variables를 검색해 열어줍니다.이후 고급(Advanced) 탭에서 환경 변수(Environment Varia..

개발/SmileStock 😃📈

[프로젝트 회고] CI/CD를 적용하기 위한 노력, 과금 문제

본 프로젝트를 각자 맡은 기능을 구현하고, EC2를 통한 정적인 배포를 하였습니다. 이후 프론트엔트가 개발되는 동안 서버 및 인프라 개발자 3명이서 초기에 설계한 CI/CD 파이프라인을 업무를 분담하여 구축하기 시작하였습니다.초기 설계한 인프라 아키텍처 업무는 Spring Server 통합 (CI), Flask Server 통합 (CI), EKS 설계 (CD) 세 가지로 분배하였고, 엔지니어 3명이서 각각 하나씩 맡아서 진행하였습니다. 제가 맡은 업무는 Flask Server를 지속적으로 통합하는 업무로 서비스 내부에서 Flask로 개발된 서버의 소스코드를 Github 레포지토리와 연동해 Push 이벤트를 Github Action에서 감지하여 Jenkins를 통해 이미지화 시키는 것이었습니다. 매일 같이..

개발/SmileStock 😃📈

[개발 이슈] 성능은 유지하며 모델 학습 시간은 단축하다

문제 사용자에게 한 줄로 다양한 정보를 전달해야되는 본 서비스의 특성상, 다른 정보들과 정보를 제공해주는 시간의 차이가 많이 날 경우 사용자가 서비스를 사용하는데 불편할 것이라고 판단하였습니다. 이런 관점에서 초기 담당한 주식 종목의 종가 예측 기능을 구현하였을 때, 모델을 학습하는데 걸리는 시간이 2분 정도 소요되었습니다. 다른 기능들은 모델을 생성하지 않고, 외부 API를 통해 응답값을 받아왔기 때문에 비교적 제가 구현한 기능의 소요 시간이 오래 걸렸습니다. 해결이를 해결하기 위해서 성능이 저하되지 않는 선에서 모델의 학습 설정을 조정해 주었습니다. 학습되는 모델을 분석한 결과 epoch 값이 10 이상 반복될 때, loss값의 변화가 무의미한 것을 발견하였습니다. 모델을 학습할 때, epoch값은 ..

개발/SmileStock 😃📈

[개발 이슈] 도커 이미지로 빌드하며 마주한 이슈들

이번 프로젝트에서 CI/CD 파이프라인을 구축하기 위해서 Flask로 띄운 서버들의 소스코드를 도커 이미지로 띄어서 ECR (Amazon Elastic Container Registry) 레포지토리에 올리는 것을 담당하였습니다. 이 과정에서 마주한 이슈들을 기록하려 합니다. Mac에서 빌드한 이미지가 EKS 파드로 배포되지 않는 이유처음 도커로 이미지를 빌드하여 배포하는 테스트를 진행할 때는 서비스를 배포한 환경에서 진행한 것이 아니라 Mac OS 로컬 환경에서 테스트를 진행해 보았습니다. 그러나 Mac에서 빌드한 이미지가 EKS에서 Pod로 배포되지 않는 오류를 맞이 했습니다. 문제 분석 결과, 소프트웨어를 구동하는 하드웨어 아키텍처가 다를 경우 빌드한 도커 이미지를 배포할 때, 오류가 발생하는 사실을..

개발/SmileStock 😃📈

[개발 이슈] API 응답 소요시간 1분

문제 - API 응답 시간 1분입력값에 따라서 기존 학습 모델이 존재하면 학습 모델을 통해 예측값에 따라 응답값을 반환하는 API를 설계하였습니다. 그러나 기존 학습 모델이 없는 입력값의 경우 모델을 학습하고 예측값을 반환하게 되는데 모델을 학습하고 예측값을 반환하는데 1분이나 소요되어 프론트 개발자가 1분이라는 시간동안 문제가 발생한 것인지, 정상적으로 작동하고 있는 것인지 알 수 없다는 문제를 제기하였습니다. 해결 - 선 응답 후 Threading 모듈 적용이 문제를 해결하기 위해서 요청된 파라미터에 따라 학습이 필요할 경우 요청자에게는 -1을 먼저 응답하고, 입력값에 대한 모델 학습은 Thread 처리를 통해 백그라운드에서 학습하도록 API 설계하였습니다. API의 흐름은 다음과 같습니다. 요청온 ..

개발/SmileStock 😃📈

[프로젝트 회고] 소통에 나이 차이는 중요하지 않다

이번 프로젝트에서는 특별한 경험을 하게 되었습니다. 바로 IT 업계에서 20년이 넘는 경력을 갖고 계신 시니어와 함께했다는 사실입니다. 많은 것들을 배울 수 있었고, 가끔은 진짜 업무를 하는 듯한 기분을 느낄 수 있었습니다. 프로젝트를 진행하면서 경험했던 특별한 일들을 공유해 보겠습니다. 시니어를 설득하는 법서버와 인프라 설계를 맡았던 팀원들과 CI/CD 파이프라인을 구축하기 위해서 EKS 클러스터를 구축하였습니다. Jenkin에서 깃허브와 연동하여 Push 이벤트를 추적해 CI를 구현하려 했기 때문에 소스코드를 깃허브를 통해서 공유받아야 했습니다. 그러나 이 과정(CI/CD)에대한 이해가 없었던 다른 기능들의 구현을 담당했던 시니어가 코드 공유를 꺼려하였습니다. 이 문제를 해결하기 위해서 정기 미팅시간..

개발/SmileStock 😃📈

[프로젝트 회고] 주식 종가 예측 개발 회고

종가 예측 기능의 목표는 특정 종목의 과거 시계열 데이터를 기반으로 다음 종가를 예측하는 것입니다. 기술 스펙은 다음과 같습니다.언          어 : Python프레임워크 : Flask라이브러리 : Keras (Dense, LSTM), Numpy, FinanceDataReader Flask, Python 선택 이유저는 원래 Spring을 다루는데 익숙하여 본 기능도 Spring으로 개발하여 API를 배포할 예정이었습니다. 그러나 사전 조사하는 과정에서 시계열 라이브러리의 다수가 Python 기반이었고, 리소스의 양도 Java(Spring)보다 Python 더 많았습니다. 과감하게 익숙한 스프링을 포기하고 Python기반 Flask 서버를 채택하기로 결정하였습니다. LSTMLSTM(Long Sh..

개발/withfriend 🫱🏼‍🫲🏽🥕

[프로젝트 회고] 테이블 구조도

Withfriend 서비스의 테이블 구조도는 아래와 같습니다. (제작 : dbdiagram)users_table : 회원 정보를 저장합니다. userId 컬럼은 사용자 SNS 계정의 id값 입니다. users_point : 사용자의 point 정보를 저장합니다. users 테이블과 1대1 관계를 갖습니다.goods : 사용자가 게시한 상품의 정보를 저장합니다.payments : 사용자의 결제 정보를 저장합니다. impUid 컬럼은 가맹점에서 조회할 수 있는 고유 결제 번호 입니다. trade : 거래건을 저장합니다. tradeUid 컬럼은 거래한 시간 정보를 조합해 구성하였습니다.trade_info : 거래건의 상세 정보를 저장합니다.trade_user : 판매자, 구매자의 정보를 저장합니다.

개발/9oormthon 부트캠프 👨🏼‍🏫

[9oormthon] Jenkins를 활용한 CI/CD

들어가며오늘은 CI/CD에 관해서 공부하였습니다. 신입 공고에도 자주 등장하는 키워드라 늘 관심이 많았고, 실제로 강의를 결제한 경험이 있는 내용입니다(물론 강의를 듣진 않았지만 🤣). 그 중에서도 Jenkins를 활용해 예제 웹 애플리케이션을 배포해 보겠습니다.CI/CDJenkins는 CI/CD의 대표적인 도구 중 하나로 먼저 CI/CD개념에 대해서 알아보겠습니다.CI (Continuous Integraion)CI는 2가지의 주요 특성을 통해 설명드릴 수 있습니다. 1. 코드 변경사항을 주기적으로 빈번하게 통합해야 한다.이는 같은 저장소에서 버그 수정, 기능 구현 등의 코드가 수정되었을 때, 이 작업 단위를 작개 쪼개라는 의미와 동일합니다. 예를 들어 기능 A의 개발을 맡은 팀이 엄청난..

개발/9oormthon 부트캠프 👨🏼‍🏫

[9oormthon] EC2에 ALB이용해서 Nginx 배포해보기

과제EC2를 활용해보기 위해 EC2 위에 상용 환경에서 다수 사용되는 Nginx라는 Web server를 배포하고, EC2에 접속하기 위해 Application Load Balancer를 연결할 수 있도록 합니다.본 포스팅은 필자가 과제를 수행하며 개인적인 의문점이나 호기심을 해소하고 기록하고 싶은 내용을 기록하기 위한 포스팅입니다.  EC2EC2란 Elastic Compute Cloud의 줄임말로 AWS 클라우드에서 온디맨드 확장 가능 컴퓨팅 용량을 제공합니다. 여기서 온디맨드(On-demand)는 단어뜻 그대로 요구사항대로 즉, 필요한 만큼 컴퓨터의 용량을 할당받는 것을 의미합니다.AWS 공식문서 참조EC2 인스턴스를 생성하면 EBS(Elastic Block Storage)라는 디스크 볼륨..

jiggyahn
Idontknow