728x90

전체 글 137

[TypeScript] 클래스 상속 시 편하게 입력하기

상황 최근 PG사 연동 업무할 일이 생겼는데, 파라미터로 넘겨야 할 항목들이 꽤 많았다. 차근차근 뜯어보니 클라이언트 쪽에서 넘겨야 할 변수는 적은데 비해, 서버쪽에서 넘겨야 할 값들은 거의 상수에 가까웠다. 처음에는 TypeScript 에서 제공하는 DTO 형태로 모든 파라미터를 다 넣었더니 너무 많아서 조잡해보였고, 간단하게 만들기 위해 유저가 받는 DTO를 따로 둔 뒤, 상속받아서 쓰는 게 좋겠다고 생각이 들었다. 근데 여기서 문제는 파라미터를 하나씩 주입시키자니 너무 비효율적이였다. 예를 들면 이렇다. # 유저 입력 DTO export class BaseDTO { param1: number; param2: string; param3: number; param4: string; constructor..

[AWS] SES - HTML 템플릿 등록 및 이메일 보내기

최근에 AWS를 이용해서 이메일 서비스를 할 일이 생겼다. 해당 업무는 주로 회원가입 시 인증번호 메일이나, 비밀번호 찾기, 축하메일 발송, 뉴스레터 등이다. 간단하게 하면 html 한두줄이면 끝나겠지만, 제대로 한다면 CSS까지 적용할 수도 있다. 전제조건으로 AWS에 SES 서비스가 이미 등록되어있고, HTML 파일이 있다는 가정 하에서 시작한다. (등록하는 과정이 엄청 어렵지도 않으니, 다른 글을 참조하면 좋을 것 같다) 1. HTML 템플릿 내 변수 확인하기 나의 경우에는 이메일로 회원가입 시 인증번호를 받는 작업이였다. 절차 상 랜덤으로 인증번호를 생성해서 보내기 때문에, 인증번호라는 변수가 필요했다. 따라서 vericiation_code 라는 변수를 만들었고, 중괄호 2개로 템플릿화시켜 나중에..

DevOps/AWS 2023.01.13

2022년을 돌아보며 - 주니어 개발자의 스타트업 회고

개인적으로 시행착오를 적으면서 개발 블로그를 하고 있지만, 나 역시 다른 사람들의 블로그 포스팅을 보면서 하는 일이 있다. 나와 같은 경험을 했던 사람은 어떠한 사람인지 궁금해서 그 사람의 에세이 글을 찾아보는 것이다. 우와, 이런 글을 쓰는 사람은 어떤 사람일까?? 라는 생각을 한다. 어떤 블로그는 자신이 어떤 사람인지 포트폴리오를 적기도 하고, 어떤 블로그는 1년 간 회고록이나 프로젝트의 경험을 되돌아보며 적기도 한다. 그 중에 블로그를 오래 운영하신 분들을 보면 이런 에세이들이 쌓여가는 모습을 보면서 그 글들이 그 사람의 인생을 대변하는 것 같아 더 멋지다고 생각했고, 개인적으로 자신을 돌아보기도 하면서 글을 써보는 게 나에게도 추억이 될 것 같아서 써보려 한다. 스타트업 입사 2021년 봄, 작은..

일상/잡생각 2023.01.01

이더리움 Private 네트워크 만들어보기

개발 환경 설정 처음에는 AWS에서 EC2 저렴한 거, t2.micro로 시도해봤다. 설치까진 쉽게 진행됐지만, 지갑을 생성할 때 프로세스가 죽었다(killed) 그래서 t3.medium으로 4기가 짜리로 시작했더니 쉽게 됐다. 중간의 2GB는 건너 뛰었지만 최소사양으로 4GB는 있어야되는 것으로 보인다. Geth 설치 2가지 방법이 있다. 1번째는 git clone 후 make 설치하는 방법, 2번째는 ubuntu 에서 제공하는 ppa로 설치하는 방법이 있는데 2번째가 더 편해보여서 2번째로 선택하였다. 참고 링크 sudo apt-get update sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get inst..

블록체인 2022.12.01

[EKS] AWS Credentials Secret 설정 시 폴더로 인식 되는 경우

상황 secret volume mount로 .secret 이라는 파일을 업로드하고 싶었으나, 디렉토리로 인식되어 파일이 존재하지 않는것으로 인식되었다. 해결방법 subPath를 명시하면 파일로 처리된다. deployment.yaml - name: private-key mountPath: /.secret - name: private-key mountPath: /.secret subPath: .secret 결과 참고 https://stackoverflow.com/questions/65399714/what-is-the-difference-between-subpath-and-mountpath-in-kubernetes https://stackoverflow.com/questions/56395758/what-is-..

DevOps/Kubernetes 2022.11.24

[EKS] Pod 노드 그룹 지정

상황 설명 쿠버네티스는 논리적으로 노드를 지정할 수 있는 옵션이 있다. 이는 AWS EKS에서는 인스턴스와 직결되고, 인스턴스 타입에 따라 결제금액의 변동이 생긴다. 따라서 파드에 필요한 자원 정도에 따라 알맞은 노드를 지정하는 옵션이 필요할 수 있다. 노드 “하나”를 지정하는 것은 EKS에서는 인스턴스 1개에만 생성하는 것이므로 노드 스케일링을 적용한 나에게는 적절한 옵션이 아닐 수 있기에, 노드”그룹”을 지정하는 옵션이 필요했다. 나의 목적은 개발용으로 쓰는 경우 적은 자원의 노드로 테스트하고, 배포환경에서는 실제로도 큰 자원의 노드로 테스트하고 싶었다. 따라서 devNode는 상대적으로 작은 크기인 t3.medium 크기로 진행하였고, stagingNode는 t3.large로 진행하였다. (apiN..

DevOps/Kubernetes 2022.11.24

[API Gateway] Private VPC 로 구축 방법

상황 설명 Private VPC 망에서 간단한 API를 작업할 일이 생겼다. 서버를 구축하기엔 API 빈도가 적어서 오버헤드가 크다고 판단하여, API Gateway + Lambda를 사용하기로 결정했다. API Gateway 에서는 사용하려는 망의 종류에 따라 [”Private”, “Edge”, “Regional”] 으로 분류된다. “Edge” 는 API Gateway를 Cloudfront 와 연결하여 사용하는 방법이고, ”Regional”은 Cloudfront 없이 API Gateway로만 사용하는 방법, ”Private”는 VPC 안에서 사용되는 경우를 말한다. 방법 먼저 zappa를 이용하기로 했다. zappa는 Lambda 쪽에서 Flask의 코드를 배포를 자동화시켜줄 수 있는 도구여서 써보니 ..

DevOps/AWS 2022.11.24

[EKS] Ingress 서비스 별 URL 관리

상황 어플리케이션이 여러 개 있는 상황에서 URL 별로 로드밸런싱이 필요해졌다. 기존에는 메인 API 서버 하나만 Ingress로 설정하였고, VPC 내부에서 K8S ClusterIP 타입의 서비스를 이용해 다른 서비스를 호출하는 방식으로 해결해왔다. 하지만 서버를 호출하는 객체가 여럿으로 늘고 외부에서 호출할 필요가 생기면서, 어플리케이션 별로 URL 작업이 필요해졌다. 시행착오 배포할 때, argoCD의 applicationSet 배포 패턴을 사용하고 있었다. 처음에는 api 서버 프로젝트의 ingress에다 다른 앱의 서비스를 붙이려고 시도해봤는데, 인식을 못해 타겟그룹도 안생기고 503 에러가 발생했다. backend service does not exist kubernetes 그럼 applica..

DevOps/Kubernetes 2022.11.24

[indices:admin/auto_create] is unauthorized for user

원인 https://github.com/deviantony/docker-elk 를 기반으로 사용하던 중에, 나의 경우는 logstash에서 새로운 index에 만들어넣도록 하였더니 이런 에러가 발생하였다. 해결방법 Github에서 받은 logstash의 경우 logstash-internal 이라는 유저가 등록되는데, 해당 logstash의 Role을 확인해보면 내가 생성한 index가 등록되지 않아서 생기는 문제로, 사용하고자 하는 인덱스를 추가하면 된다.

Framework/ELK Stack 2022.08.05
728x90