CodeDeploy
CodeDeploy는 Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 또는 ECS 서비스로 애플리케이션 배포를 자동화하는 배포 서비스이다. 기존 코드 변경 없이도 사용이 가능하다. 장점 신속한 새 기능 출시 애플리케이션 배포 시 가동 중지 방지 수동 배포와 관련된 다양한 위험 없이 애플리케이션 업데이트 중지 및 롤백 가능 동시 배포 가능 배포 자동화 배포 유형 실행 중 배포(인 플레이스 배포) : 애플리케이션이 중지되고 최신 버전이 설치되며 새 버전이 시작되고 유효성이 검사된다. EC2/온프레미스 컴퓨팅 플랫폼을 사용하는 배포만 사용할 수 있다. 블루/그린 배포 : 새 버전으로 변경에 의한 중단을 최소화하면서 애플리케이션을 업데이트하는 데 사용된다.
AWS SAM init 에러
에러1sam bootstrap 명령어로 stage stack을 생성하던 중 에러가 발생했다. 1Error: Stack aws-sam-cli-managed-prod-pipeline-resources is missing Tags and/or Outputs information and therefore not in a healthy state (Current state:ROLLBACK_COMPLETE). Failing as the stack was likely not created by the AWS SAM CLI 해결법정해진 해결법은 없다. 구글링을 하면 aws credential이 잘못 설정된 문제라고 하기도 하고 cloud formation에서 생성이 실패한 스택을 직접 삭제 후 재배포 하면 된다는 글도 있었다. 나는 두 가지 방법으로는 해결되지 않았고 cloud formation 대시보드에서 스택 이벤트로 들어가 로그를 확인해서 해결했다. IAM 유저에 s3 권한이...
AWS SAM (Lambda Typescript로 작성하기)
SAM은 Serverless Application Model의 줄임말이다. 서버리스 애플리케이션을 빌드하는 데 사용할 수 있는 오픈 소스 프레임워크이다. 서버리스 애플리케이션이란 작업을 수행하는 데 함께 작동하는 Lambda 함수, 이벤트 소스 및 기타 리소스의 조합이다. 단순 Lambda 함수 그 이상으로, API, 데이터베이스, 이벤트 매핑 등의 추가 리소스를 포함할 수 있다. AWS SAM CLI를 사용해 정의된 서버리스 응용 프로그램을 빌드한다. 로컬에서 Lambda 함수를 호출하고, 단계별로 디버깅하고, 서버리스 애플리케이션을 패키징하는 등의 작업이 가능하다. CodeBuild, CodeDeploy 및 CodePipeline 등의 서비스를 심층적으로 통합하여 사용할 수 있다. 설치설치는 mac에서 homebrew로 진행했다. 12brew tap aws/tapbrew install aws-sam-cli 시간이 좀 걸린다. 1sam --version 명령어로 설치를...
Kinesis
Amazon Kineses를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있으므로 새로운 정보에 신속 대응할 수 있다. Amazon Kineses에서는 기계 학습, 분석 및 기타 애플리케이션을 위해 비디오, 오디오, 애플리케이션 로그 데이터와 같은 실시간 데이터를 수집할 수 있다. 중요 특징 실시간 : 실시간 스트리밍 데이터를 수집 및 처리할 수 있다. 완전관리형 : 사용자가 인프라를 관리할 필요가 없다. 확장성 : 매우 짧은 지연 시간으로 수많은 소스의 데이터를 처리할 수 있다. Kinesis Data Streams거대한 데이터 스트림을 실시간으로 다룰 수 있는 서비스이다. 실시간으로 데이터 지표를 확인하고 처리 및 분석 작업이 가능하다. 가장 보편적으로 사용하는 케이스는 실시간 데이터 집계가 있다. 데이터를 집어넣고 처리를 위해 불러오는데 걸리는 시간인 ‘put-to-get delay’는 1초 이하이다. 데이터가 들어오자마자 즉각적으로 사용할 수...
[React Native] dotenv 사용하기
dotenv를 쓰려고 추가하다가 생각지도 못하게 시간을 잡아먹어서 정리해놓으려고 한다. react-native-dotenv 모듈을 사용하면 된다. react-native-dotenvInstallationreact-native-dotenv 모듈을 다운받는다. 12yarn add react-native-dotenvyarn add @types/react-native-dotenv Configuration이 모듈은 babel plugin 이라 설정 파일에 추가해줘야 한다. babel.config.js 1234567891011121314module.exports = { presets: ["module:metro-react-native-babel-preset"], plugins: [ [ "module:react-native-dotenv", { moduleName:...
[React Native] screenshot 다루기
보호된 영상 컨텐츠의 스크린샷을 막기위해 리서치를 진행했다. 몇가지 방법을 찾았는데 결론부터 말하자면 IOS / Android 양쪽에서 완벽하게 캡처 동작을 막을수는 없다. 그래도 이벤트를 감지해 후처리를 해줄 수는 있다. react-native-screen-capture-secureScreenCaptureSecure Github에서 코드를 확인할 수 있다. 1234import ScreenCaptureSecure from "react-native-screen-capture-secure";ScreenCaptureSecure.enableSecure();ScreenCaptureSecure.disableSecure(); 간단하게 사용이 가능하다. enableSecure()를 실행하고 화면을 캡처하면 경고창이 뜬다. 모듈 파일로 들어가서 경고 메세지를 수정할 수도 있다. expo-screen-capture (android...
Github OAuth 로그인
Github OAuth 로그인깃허브에서 제공하는 API를 사용하면 쉽게 유저 정보를 불러와 사용할 수 있다. 공식 문서 : Authorizing OAuth Apps 위 공식문서를 참조하면 간단하게 구현할 수 있지만 한 번 정리만 해놓으려고 한다. Github OAuth Application 생성Github 계정 설정 > Developer settings > OAuth Apps메뉴로 들어오면 새로운 OAuth Apps을 생성할 수 있다.callback url은 나중에 써야하니 기억해놓자. 생성을 마치면 앱 설정 화면으로 넘어오는데, 여기서 API에 필요한 파라미터들(client_id, secret 등)을 발급받을 수 있다. 사용자의 Github 계정 정보 요청하기1GET https://github.com/login/oauth/authorize 파라미터 Name Description client_id Required Github OAuth 앱 생성시...
NodeJS pm2 ProcessContainer.js 오류
NodeJS pm2 ProcessContainer.js 오류Node 앱을 따로 시작하는 것은 문제가 없는데 PM2로 실행하는데서 자꾸 문제가 발생했다. 문제 및 에러로그12345678910111213141516171819202122232425262728293031323334PM2 | 2022-01-17T14:04:33: PM2 log: App [NETWORKCHECK-AND-PLAYERDEMO:0] onlinePM2 | node:internal/modules/cjs/loader:936PM2 | throw err;PM2 | ^PM2 |PM2 | Error: Cannot find module '/usr/local/temp/APP_NAME/node_modules/pm2/lib/ProcessContainer.js'PM2 | at...
Actor model framework
Actor model 프레임워크참고 링크액터 모델
Event handler의 등록 및 삭제
Event handler의 등록 및 삭제이벤트 등록EventTarget.addEventListener() target.addEventListener(type, listener[, options]);target.addEventListener(type, listener[, useCapture]); Argument type: 이벤트 유형을 나타내는 문자열 listner: 이벤트 알림을 받는 function 객체 options capture: EventTarget으로 전송하기 전, 등록된 리스너로 이벤트의 전송여부를 나타내는 Boolean once: 리스너를 추가한 후 한 번만 호출되어야 하는지를 나타내는 Boolean (true이면 호출할 때 리스너가 자동 삭제됨) passive: true이면 리스너에서 지정한 함수가 preventDefault()를 호출하지 않음을 나타내는 Boolean useCapture: options의 capture와 같음. 트리에서 위쪽으로...