nodejs

서론 현재 개발하고 있는 프로젝트에서 html 형태의 보고서를 만들고, 이메일로 유저에게 전송해야할 일이 생겼다. 기존의 코드에서는 nodejs에서 'nodemailer'를 사용하고, gmail을 통해서 전송하였다. 이때 생기는 문제점이 gmail 이라서 유저에게 신뢰성이 떨어질 수 있고, 별도의 DKIM 인증 등 스팸 메일로 분류되는 것을 피하기 위한 설정을 하지 않았기에 일부 메일이 스팸으로 분류되는 문제가 있었다. ( 물론 nodemailer에서도 이러한 기능을 지원한다 https://nodemailer.com/dkim/ ) 유저 뎁스가 깊어서 많이 사용하지 않던 기능이라 일단은 레거시로 놔두고 있었는데, 이번에 해당 부분을 개편하면서 아예 새로운 방법을 택했다. 현재 서비스에서 사용하고 있는 도메..
왜 쓰게 되었는가? 서비스를 분석하기 위해 유저의 활동 데이터를 수집해야 한다. frontend layer에서 firebase, mixpanel, airbridge 등의 다양한 툴을 붙여서 분석하고 있지만 전체적인 유저의 추세를 보기에는 간편하고, 시각화도 잘 해주지만 유저 한명한명을 타게팅해서 뭐하나 분석하기엔 어려움이 있었다. backend layer에서는 API를 호출할 때마다 로그를 기록하면되니, 로그만 잘 작성해둔다면 유저가 어디에서 머물고, 어떤 버튼을 클릭하고, 어디에서 이탈하는지 분석할 수 있을것이다. 원래는 어떻게 했는가? 원래도 logging 기능은 있었다. import logger from "../../utils/winston"; ... isUserPriorty: async (_, {..
Elasticsearch란 루씬(자바로 된 정보 검색 오픈소스)기반 검색 엔진이다. 역인덱스 방식으로 단어 단위로 나눠서 저장을 하여 검색속도를 높인다. 장점 : 검색속도 빠름 - 모든 행을 탐색해야하는 RDBMS 방식보다. 이미 단어가 어느 문장에 들어있는지 mapping 되어 있으니 훨씬 빠르다. 단점 : 수정, 삭제 속도 느림 - 단어별로 다 쪼개놨으니 삭제하려면 일일이 찾아서 삭제해줘야하는 낭비가 존재 -> 아 그러면 수정과 삭제가 빈번하지 않고, 검색을 자주하게 되는거에 쓰면 좋겠군 -> 로그 수집 및 분석 현재 진행중인 프로젝트에서 로그 정보 수집 및 분석을 위해 도입하고자 한다.(나중에 따로 자세히 적어보겠다) 설치 1. java 다운로드 https://www.java.com/en/downl..
내가 쓰고 있는 백엔드 기술에 대해 언어, 런타임, 프레임워크 자체에 대해서 조사하고 정리해보고자 한다. 언어 - JavaScript 역사 JavaScript(이하 JS)는 애초에 웹 브라우저를 위해 만들어진 언어다. 1990년대에 주된 브라우저였던 '넷스케이프'(지금은 파이어폭스로 승계되었다고 한다)를 만든 회사인 '넷스케이프 커뮤니케이션즈'에서 정적인 HTML을 동적으로 표현하기 위해 만든 언어이다. 이름이 'Java'Script인 이유는 애초에 만들때부터 만들게될 스크립트 언어가 자바를 구현할 것이고 비슷한 문법을 채용하고자 했다. 더불어 초기에는 LiveScript였으나 Java에서 파생되었다는 점과, 마케팅의 이유로 JavaScript가 되었다고 한다. ECMAScript ECMA(정보와 통신 ..
2, 3일동안 삽질한 결과를 차차 정리해보려한다. 원래 EC2에 codedeploy를 달아서 CI/CD를 하다가, 서버 관리와 CI/CD를 더 편하게 해주는 'Elastic Beanstalk'라는 것이 있다고 해서 사용해봤고, 이 글에서는 정리(찬양)을 해보려 한다. Elastic Beanstalk 란? "AWS Elastic Beanstalk는 Java, .NET, PHP, Node.js, Python, Ruby, Go 및 Docker를 사용하여 개발된 웹 애플리케이션 및 서비스를 Apache, Nginx, Passenger 및 IIS와 같은 친숙한 서버에서 손쉽게 배포하고 확장할 수 있는 서비스입니다." - 출처 AWS 간단히 말하면 몇몇 자주 이용되는 언어로 개발된 웹 서비스를 쉽게 배포할 수 있게..
지금 하고 있는 프로젝트에서 React-Native 기반의 앱에서 사진을 찍어서 upload 요청을 하면, 받아서 S3에 올리고, 다시 꺼내주는 API를 만들어야했다. 처음에는 REST API 대신, 원래쓰던 GraphQL로 트라이 하다가, 몇번에 실패 후 사진 업로드 모듈만 따로 REST로 때어냈다.(아 아무튼 사진만 업로드 되면 되니까...) 하는김에 AWS 보안 설정도 좀 더 손봐서 추가해본다. 1. AWS IAM 사용자 추가 및 Access Key 발급 AWS 콘솔에 root 유저로 로그인 되어있다는 가정하에, 좌측 상단에서 IAM 검색 -> 사용자 -> 사용자 추가 위와 같이 액세스 키, 암호를 할당, 이후 쭉쭉 다음 눌려서 검토 후 생성 -> 이때 key를 csv로 받을 수 있고, 유저 이름과..
· 개발
Ubuntu 20.04(리눅스)에 Apache2를 사용해서 Nodejs+express가 3000포트로 뿌리는걸, 80포트(기본 http)로 client가 들어왔을 때, 연동되도록 포트 포워딩(포트 매핑)을 해주는 과정이다. (3000포트는 예시일 뿐 다른 것도 상관없다) 할 때마다 삽질해서 정리해둔다. 특히 apache와 apache2는 폴더 구조와 내부 설정 구조가 완전히 다르니 정확히 파악해서 사용하자 예전에 서브 도메인으로 바꿔주는건 아래 포스팅에서 참고하면 좋을 듯 https://pypystory.tistory.com/9 먼저 apache2를 설치해준다. sudo apt-get install apache2 아래로 들어가서 아파치 설정을 해준다. cd /etc/apache2/sites-avaliab..
· 개발
Svelte는 멘토님의 일침과 함께 고이 던져두고, 원래 공부하던 리액트로 돌아왔다. NodeJS는 설치되어 있다는 가정하에 시작한다. 이번엔 카카오API로 로그인을 만들어보고, 다음편엔 sms나 email을 push하는 기능을 만들어볼거다. 개인 프로젝트명을 요약하면 '리액트와 노드JS를 사용해서, sms, email, kakao 메시지를 push하는 기능을 만들껀데, 인증은 카카오 로그인 API로' 정도가 될것 같다. Setting 1. 프로젝트 폴더(빈 폴더)에서 npm init을 해주고, client, server 폴더를 만들어준다. npm init mkdir client mkdir server 2. client 폴더로 들어가서 npx CRA . 을 해준다. cd client npx create-..
· 대회
Github : https://github.com/wq0212/campus-compass Site : http://campuscompass.site/ 어느날 인스타를 보던 중 본교 아트앤테크놀로지(이하 아텍) 학과에서 해커톤이 개최된 공고를 확인했다. 비슷한 기획이 컴공 학생회 하면서도 말로만 나온적이 있었지만, 구체화 된적은 없었다. (게시물 사용 허락과 해커톤 기획 등을 해주신 아텍 학생회 관계자분들께 다시 한번 감사드린다.) 본인도 웹개발에 관심있고, 최근 웹보안 공부하면서 틈틈이 생각나는 프로젝트 아이디어는 뽑아둔게 몇개 있어서 참여를 결심했다. 결정적으로 대부분 혼자서 개발하거나, 프론트/백엔드 정도로만 나눠서 개발해본적이 있었기에 디자인, PM을 끼고 팀 프로젝트를 경험해보고 싶기도 했다. 직..
· 개발
도메인까지 연결하고 나서 개발에 필요한 기본 프로그램들을 설치해주려한다. cmd창에서 SSH 프로토콜로 서버에 접속해준다. 최초에 발급받은 root 계정의 비밀번호로 로그인하거나, 이미 비밀번호를 수정했다면 수정한 비밀번호로 ubuntu 계정으로 접속한다. 따로 user추가를 안해도 우분투를 설치하였다면 ubuntu 계정이 존재한다. ssh ubuntu@example.com 1. node 설치를 위해 curl을 다운 받는다. cURL(Client URL) : 클라이언트에서 코드를 이용해서 쉽게 웹 브라우저 처럼 활동할 수 있도록 해주는 오픈소스 $ sudo apt-get install curl 2. nodejs를 설치한다. $ curl -sL https://deb.nodesource.com/setup_1..
파이랜스
'nodejs' 태그의 글 목록