전체 글 27

[Typescript/Express] Typescript 를 익힐 겸 백엔드 프로젝트를 해보자! (2)

벌써 10월의 둘째주라니.. 하루하루가 너무 빠르다. 저번 포스팅에 이어 프로젝트 구성에 대해 더 보고 넘어가려 한다. asyncHandler 라는 것을 통해 async(req, res, next) 를 매번 작성하지 않을 수 있도록 했었다. 이번은 decorator 를 활용해 POST, GET, PUT, DELETE 를 구현하여 router 에 등록시켜주는 함수를 살펴보자. 사실 nest JS 프레임워크를 사용하면 되지만 괜히 해보고 싶고 궁금해서 순수 TS로 하니 귀찮아서 하게 된.. 작업.. Get Http 메서드를 데코레이터 패턴으로 구현하여 컨트롤러에 @Get(name) 형태로 사용 시 route 에 자동으로 등록이 되는 형태로 구현하려고 한다. 먼저 route 에 등록하는 모습을 보자 impor..

IT/프로그래밍 2021.10.12

[Typescript/Express] Typescript 를 익힐 겸 백엔드 프로젝트를 해보자! (1)

express Route 를 통해 서버 통신을 할 수 있는 기본적인 URL 매핑을 진행하고, async -await 을 통한 비동기 처리 응답을 가능하게 해보자. typescript 를 익히는데 그냥 익히기만 하면 재미가 없으니 문법 + 프로젝트를 같이 해보려고 작업을 진행해보고 있습니다. 먼저 프로젝트는 커머스를 타겟으로 하고 있습니다. 오늘은 Route 설정하는 내용 관련해서 공유하려고 합니다. 우리가 흔히 Express 라우트 설정하는 부분은 공식페이지만 봐도 알 수 있지만, 한 번 스윽 훑어보면서 이런 점이 다르구나 라는 게 있기를 바랍니다. import express from 'express'; const app = express().Application; app.get('/', (req, re..

IT/프로그래밍 2021.09.13

[AWS/EC2] aws ec2 linux puppeteer 설치 및 한글 폰트 적용하기

AWS EC2 에서 Node.js 를 통해 슬랙으로 운영 현황 데이터를 전송해야 하는 경우가 생겨 작업을 진행했었다. 처음엔 console-table, markdown-table 을 사용해 전달하려 했으나 모바일 앱에서 메세지가 깨지면서 내용을 정확하게 알기가 어렵다는 이슈가 생겼고, HTML을 작성해서 image 로 전달하고자 위와 같은 작업을 진행했고, AMI 를 생성하여 배포하였다. 사용 앱/라이브러리/서비스 nodejs v12.22 aws ec2 linux1 node-html-to-image (라이브러리 내의 puppeteer) google-chrome-stable 위 4가지를 사용했고, 이 글에서는 html을 만들어 스크린샷을 생성하는 작업을 진행하고 ./local-chromium을 사용하면서 ..

IT 2021.09.03

[AWS/Slack] slack 알림으로 주기적인 서버 모니터링 하기

회사에서는 AWS 서버에 빈즈톡을 사용하여 서비스를 하고 있다. 약 2년 전에 새로 만든 앱 서비스를 제공하는 서버에 트래픽이 예상치 못하게 늘어 장애로 인해 죽는 경우가 발생했었고, 이에 대해 미리 헬스체크를 계속적으로 했다면 조금 더 빠르게 대응할 수 있지 않았을까 라는 생각에 헬스체크를 위한 로직을 추가했다. 사용된 어플리케이션은 슬랙 웹 훅 + aws-sdk (node module) 이다. 회사에서 slack 으로 업무적 의사소통을 진행하고 있고, 메인 언어가 Node이기 때문에 이러한 스펙으로 진행했다. 사용한 슬랙 API 내에 있는 내용은 https://api.slack.com/reference/block-kit/blocks 이 곳에 있는 내용 + 자잘한 것들 의 내용이기에 참고하였으면 좋겠다..

IT 2021.08.25

[JAVA/JPA] JPA.. 이름만 들어봤다!! 이제라도 알자..

업무를 진행하면서 Spring 을 사용하는 것이 처음이라 생소한 것들이 많다. 이전에는 순수 자바 1.7 + 서블릿 + MyBatis 를 사용했기에 모르는 내용이 많아 최근 들어 공부를 진행하고 있다. 하지만 업무는 날 기다려주지 않고, 코드리뷰 진행 시 내가 모르는 부분에 대해 질문했고, 이에 대한 답변으로 들었던 내용을 모르고 이를 뒷받침하는 JPA 영속성 컨텍스트를 모르기 때문에 찾아봤다. 질문: 분명 save(), commit(), flush() 라는 코드를 명시적으로 작성하지 않았는데 데이터가 왜 업데이트 된건가요? 답변: 그건 Entity Manager 가 처리해줘서 그래요! 라고 답변을 받았다. 너무나 쇼킹했고 더 궁금해서 자료를 찾았는데 이 또한 김영한 님의 JPA 강의를 듣고 작성한 것 ..

IT/프로그래밍 2021.07.28

퇴사 전 날 야근해버리기!!

퇴사 바로 전 날 회사에서 야근을 하는 야근러,,, 2일 전부터 관리자 서버에서의 쿼리 튜닝을 진행하고 있다. 왜냐하면 평소에 DB CPU 를 40~50% 쓰고 있는데 CMS 에서 최근 오픈한 서비스 관련하여 서비스 신청자들의 데이터 확인 혹은 통계를 보려고 하면 CPU 가 가득가득 차올라서 이게 왜 이런가 싶었다. 그래서 CMS 서버를 까보니... ㅠㅠㅠ 이전 작업자는 사실 프론트엔드 개발자이며 서버 쪽에 관해 상대적으로 아는 내용이 적다. 그리고 일정 때문에 많은 고생을 했다는 것을 알고 있고, 그게 쿼리에서 보였다. 그래서 퇴사 2일을 앞둔 현재 최근 오픈한 이벤트 서버와 관련하여 신청자/당첨자 조회 기능에 대해 쿼리 튜닝을 완료했고, 확연한 차이를 보였다.. 마지막으로 오늘 이 시간까지 통계 쪽 ..

그냥 끄적끄적 2021.06.17

[RDS/MySQL] AWS Aurora 를 쓰는데 종종 개발서버 Latency가 길어진다!?

개발 서버를 t2.micro 로 RDS/Aurora(MySQL) 로 생성하고 캐릭터셋만 맞춰서 작업을 진행해왔다. 분명 단일 EC2 인스턴스 3개에서 접근할 때 아무 문제가 없이 동작하던 DB였다. 하지만 그렇게 생성하고 서비스가 2개 정도 늘었다. 그만큼 난 RDS 커넥션을 붙였다. 이때부터가 문제의 시작이었다. 종종 개발서버에서 응답이 오지않아 QA, 클라이언트 개발자들이 '서버 죽었다' 라고 이야기해주어서 서버 로그를 볼때마다 늘 AcquireTimeout 문제라고 Sequelize 에러가 발생했으며, 재기동으로 급한 불 끄기에 급급했다. 그래서 오늘은 제대로 서버를 봐주자!! 라는 마인드로 어떤 부분의 문제인가를 찾다가 알게된 글을 공유하려고 한다. MySQL의 timeout 설정 sleep 세션..

[RDB/MySQL] 이모지를 사용하는 DB Charset 설정

이모지를 사용하는 서비스에서는 일반적인 UTF-8 Charset 으로는 불가능하다. 이유는 이모지가 3Byte 가 아닌 4Byte 이기에 이모지를 어플리케이션을 통해 DB에 저장 시 ??? 로 들어가는 경우를 볼 수 있다, 그렇다면 이 문제를 해결하기 위한 방법은 무엇일까? 4byte의 문자를 저장할 수 있는 DB charset 과 설정법을 알아보자 MySQL 에서 2010년 3월 24일 utf8mb4 라는 Charset 을 추가지원했다. (관련 : https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-3.html ) 자 위에서 설명된 내용 중 현재 우리에게 가장 중요시되는 부분은 4Byte 문자를 지원한다는 것이다. Emoji 가 바로 그 4Byte에 해..

[BlockChain/tech] 블록체인 기술을 뒷받침하는 것들.

1. 분산원장기술(DLT, Distributed Ledger Technology) - 의미: 중앙원장기술과 반대로 중앙서버나 중앙관리자의 제어 없이 분산화된 네트워크의 각 노드(개인)들이 Database 를 공유하고 계속 동기화하는 기술. - 블록체인 == 분산원장이지만, 분산원장이 블록체인인 것은 아니다. 중앙원장기술의 문제점으로 제기돼던 내용 중, 비용문제, 시간문제, 보안문제가 있었다. 타 글, 혹은 블록체인에 대해 이야기를 할 때, 비용, 시간 등에서 블록체인기술이 더 낫다 라고 이야기들을 하지만 이 부분은 잘 고려해봐야한다고 한다. 2. 합의 형식 규칙 (합의 알고리즘) - PoW ( Proof-of-Work ): 작업증명 > 많은 해시(hash) 를 보유한 사람이 코인을 얻을 수 있는 블럭(B..

IT/스터디 2021.05.06
반응형