본문 바로가기

분류 전체보기

(267)
[기록] AWS EC2 / Docker 환경 마련하기 현재 진행 중인 졸업 프로젝트에서 나는 데이터 수집 파이프라인 구축 역할과 API 서버 구축 역할을 맡았다. 이 글에서는 API 서버를 실제 환경에 배포하기 위한 첫 단계로 EC2 + Docker 환경을 마련해 본다. 추가적으로 탄력적 IP에 대해 알게 된 점을 설명한다. 내가 달성하고 싶었던 목표는 다음과 같다. EC2 환경에서 docker을 운영한다. 도메인 명을 기반으로 api 서버에 접근한다. 도메인을 구매하고 실제 환경에 연결한다. 경로에 접근할 때 https을 적용한다. http로 접근하는 경우 https로 redirection한다. 1번과 2번은 과거 프로젝트를 통해 경험해 본 적이 있었다. 다만 당시에는 클라우드에 대해 잘 이해하지 못하고 있던 상태였기 때문에, 다시 되짚어보자는 마음으로 ..
[CS] 객체 지향 객체지향(Object Oriented) 실세계의 개체를 속성과 메서드가 결합한 객체 형태로 나타내는 패러다임으로, 컴퓨터 프로그램을 단순히 명령 목록으로 보는 것에서 벗어나 여러 독립된 객체들의 모임 및 메시지 기반 상호작용으로 간주한다. 객체지향의 장점 재사용과 확장이 용이하다. 유지보수가 쉬운 편이다. 복잡한 구조를 단계적 / 계층적으로 표현한다. 현실세계를 모형화하여 이해하기 쉽다. 객체지향 구성요소 클래스 공통의 속성(프로퍼티) 및 연산(메서드)를 가지는 객체의 집합 속성(프로퍼티): 객체가 가진 데이터를 나타내는 속성들 메서드: 객체가 메시지를 받아 실행하는 구체적인 연산 실제 세상의 데이터를 추상화하는 단위(개 => Dog 클래스) 객체 물리적, 추상적으로 외부 요소와 식별되는 대상. 독립적인..
[typescript] Type vs Interface 면접에서 이 타입과 인터페이스를 사용한 이유에 대한 질문이 나왔다. 둘 사이의 차이를 깊게 생각해 본 적이 없어서, 이 부분을 이상하게 대답했던 점이 참 아쉽게 느껴진다. type은 몰라도 interface에 대해서는 선언 병합이라는 명확한 이점이 있는데, 이게 왜 문을 나온 후에 기억나는 걸까? 정말 너무 아쉽다. 이러한 배경에서 type과 interface의 차이에 대해 정리해보기로 한다. type alias https://www.typescriptlang.org/ko/docs/handbook/2/everyday-types.html#%ED%83%80%EC%9E%85-%EB%B3%84%EC%B9%AD 우리는 쉽게 type이라고 칭하지만, 공식 문서에서는 type alias라고 명시되어 있다. 타입 별칭..
[AWS, 기록] lambda: killed Runtime.ExitError 요약 killed Runtime.ExitError은 lambda 함수에 대한 메모리 할당량 부족으로 인해 발생했을 확률이 높다. 현재 에러가 발생했을 때 로그 상에서 Memory Size 관련 내용을 발견할 수 있다면, lambda 함수에 대한 메모리 할당량을 1.5 ~ 2배 늘려 현재 문제를 해결할 수 있다. 문제 상황 나는 현재 진행 중인 졸업 팀 프로젝트에서 뉴스 기사 데이터 수집 기능과 백엔드 파트를 맡아 개발을 진행하고 있다. 뉴스 기사 데이터 수집 기능의 경우 AWS SQS를 이용하여 작업 범위를 적절한 크기로 쪼개 lambda 함수에서 실행하도록 구현하였고, 여태까지는 잘 동작했다. 그런데, 최근 lambda 함수가 지나치게 여러번 실행되는 현상이 Cloud Watch 로그 상에 나타났다. ..
[오늘의 삽질] jest.fn이 undefined을 반환하는 경우 jest를 이용하여 테스트를 진행하는데, mocked 객체가 동작하지 않는 현상이 발생했다. jest.fn( )에 반환값을 명시했기 때문에 반드시 함수가 값을 반환해야 하지만, 실제로는 undefined만 반환되는 문제가 있었다. 참고로 javascript에서 아무런 값도 반환하지 않으면 undefined이므로 정확히 말하면 mock 함수가 값을 반환하지 않는 문제로 볼 수 있다. describe('TokenInfoService', () => { let service: TokenInfoService; let repo: jest.Mocked; // 작성한 mock repository 객체 const mocked_repo = { save: jest.fn((tokenInfo: TokenInfo): Promis..
클라우드 서비스 유형 현재 글은 K-MOOC 강의 및 인터넷 상의 정보(SDS 등)를 기반으로 합니다. 클라우드 서비스 인터넷을 통해 컴퓨팅 자원, 플랫폼, 소프트웨어 등 IT 관련 서비스를 원격으로 제공받는 것. 사용한 만큼 지불하는 on-demand 방식을 기반으로 하며, 사용자가 필요한 시점에 필요한 만큼 자원을 할당받을 수 있다. 장점 초기 투자 비용 및 유지보수 비용이 감소하며, 유지보수가 용이하다. : on-demand 기반 -> 초기 투자 비용 감소. 유지 보수 + 기타 비용 절감. 업데이트 등 유지보수 필요 X 신속하고 유연하게 인프라를 구성할 수 있다. : 사용자 요구에 따라 신속하게 scale in - out / up - down 조절이 가능(자원 낭비 줄이고, 요구에 맞게 구축) 언제 어디서나 접근 가능하..
클라우드 개요1 K-MOOC 매치업 수강과정 내용을 기반으로 웹 상의 정보(SDS 용어집 등)를 참고했습니다. 클라우드 컴퓨팅 서버, 네트워크, 스토리지, 애플리케이션, 서비스 등 구성 가능한 컴퓨팅 리소스가 포함된 공유 풀에 필요할 때 액세스할 수 있는 모델. 물리적 서버를 가상화하여 인터넷 서비스로 제공하므로, 사용자는 시간과 장소에 구애받지 않고 네트워크를 통해 컴퓨팅 자원을 사용할 수 있다. 클라우드 네트워크를 통해 접근할 수 있는 가상화된 서버, 서버에서 동작하는 프로그램 및 데이터베이스를 제공하는 IT 환경. 클라우드를 통해 컴퓨팅 자원을 인터넷을 통해 쉽게 이용할 수 있다. 클라우드 서비스 클라우드 컴퓨팅을 기반으로 제공되는 서비스. IaaS, PaaS, SaaS 등 다양한 형태로 서비스가 제공될 수 있다...
[기록] lambda, 데이터 수집 중 나타난 429 응답 코드 개요 https://blaxsior-repository.tistory.com/245 [HTTP Status] 429 Too Many Requests https://developer.mozilla.org/ko/docs/Web/HTTP/Status/429 429 Too Many Requests - HTTP | MDN HTTP 429 Too Many Requests 응답 상태 코드는 사용자가 주어진 시간 동안 너무 많은 요청을 보냈음을 나타냅니다("속도 제한"). deve blaxsior-repository.tistory.com HTTP 429 응답 코드는 사용자가 일정 시간 동안 너무 많은 요청을 보냈으므로, 요청 전송을 지연 또는 조절하라는 의미를 담고 있다. Retry-After 헤더를 통해 정확히 얼마..