Tech 15

간단한 S3 파티셔닝으로 성능 최적화하기

S3는 대학생 때 처음 개발을 공부하던 때부터 클라우드 분야에서 일하고 있는 현재까지도 항상 편리하게 사용해온 AWS 서비스이다. 사실상 거의 무한에 가까운 양의 데이터를 저장할 수 있고, 가용성도 일레븐 나인(99.999999999%)을 제공하기 때문에 많은 회사들에서도 대량의 데이터를 저장할 때 많이 사용하는 것으로 보인다. 스타트업에서 일할 때 대량의 데이터를 읽어오면서 버킷 내 파일 개수가 늘어날 수록 성능이 점점 느려지는 것 같다는 느낌적인 느낌을 받곤 했는데, 최근 파티셔닝(Partitioning) 이라는 개념을 접하게 되면서 S3 성능을 개선하는 방법에 대해 공부하고 포스팅을 쓰게 되었다. 이 포스팅에서는 S3 파티셔닝을 이용해 어떻게 성능을 올릴 수 있을지에 대해 짧게 정리해볼 예정이다. ..

Tech 2024.02.04

AWS Lambda Layers 기능으로 python 라이브러리 import 하기

aws lambda로 개발할 때 selenium, openpyxl 과 같은 python 라이브러리들을 import 해주려고 하는데, No module named ... 오류가 떴다.AWS 환경이 아니라 평소 내 컴퓨터에서 개발할 때에는 터미널을 열고 pip install 명령어를 이용해서 라이브러리를 설치해주면 되지만, lambda에는 터미널이 없다.이런 경우 라이브러리를 어떻게 lambda 환경에 미리 설치해줄 수 있을까?AWS Lambda의 Layers 는 2018 AWS Re:Invent에서 발표된 기능이다. 위와 같은 상황에서 외부 패키지를 미리 설치해서 세팅해주기 위해 사용된다.Lambda Layers를 이용해 서버리스에서 외부 패키지를 활용하는 방법과 개념에 대해 알아보자. Lambda Lay..

Tech 2022.12.02

AWS API와 Step Functions로 빠르게 비즈니스 기능 개발하기

* 2022 AWS Community Day Seoul 발표(Step Functions로 30분 만에 서버리스 서비스 개발하기)에서 진행한 실습의 Full 가이드입니다.계속 업데이트 됩니다.  들어가며,AWS가 제공하는 서비스들을 이용해서 애플리케이션을 개발하기가 점점 쉬워지고 있다.는 AWS에서 서버리스 애플리케이션을 개발할 때, 로직들 간 관계를 정의하고 연결하는 데에 편리한 오케스트레이션 서비스이다. 이를 이용하면 여러 기능의 Lambda들을 원하는 순서로 연결하는 것뿐 아니라 SDK(Software Development Kit)로 제공되는 다양한 AWS의 서비스 API들을 간편히 연결해서 하나의 애플리케이션을 만들 수 있다.  이 서비스를 이용하면 AWS의 다양한 서비스를 통합하기가 쉬워서 개인적..

Tech 2022.10.28

AWS IAM과 친해지기

AWS Builders 온라인 시리즈를 듣고 정리한 내용입니다. YoutubeIAM은 AWS 사용자라면 끊임없이 사용하게 되는 아주 중요한 요소이다. AWS 리소스를 사용하기 위한 모든 요청은 Identity and Access Management, 즉 IAM을 통해 이루어진다. 따라서 IAM은 가장 기본적이면서도 핵심적인 도구이며, 사용자의 보안을 위해 꼭 알아야 하는 요소이다. IAM 이란?Identity and Access Management 으로, AWS 전체의 권한 통제 시스템이다.💡  Root Account  vs  IAM  어떤 걸로 로그인 해야 할까?루트 어카운트는 거의 모든 권한을 가지고 있기 때문에 AWS 작업을 이 계정으로 하는 것은 보안에 좋지 않다. 루트 어카운트보단 IAM 유저..

Tech 2022.04.26

Java JSONObject에서 키 값이 없는 경우 파싱하기

Github API를 사용해서 한달간의 commit 수를 나타내는 json 값을 파싱해와야 하는 일이 있었다. 그런데 key값이 없어서 값을 다루는 데 삽질하다가 JSONArray로 접근해서 해결한 내용을 포스팅하려 한다. 아래는 내가 가져올 JSON 값이었다. key값이 하나도 지정돼있지 않고, value의 배열이 나열되어 있었다. 각 배열의 3번째값이 그 날의 Commit 수를 나타내고 있었기에, 나는 각 배열의 3번째 값들 (3, 10, 8)만 get해와서 더해주고자 했다. [ [ 0, 0, 3 ], [ 0, 1, 10 ], [ 0, 2, 8 ] ] 그런데 key값이 없어서 값을 get 해올 수가 없었다. //참고 --- 일반적인 JSON 형식 (key값 존재) { "age":22, "name":"..

Tech 2021.07.18

NP-hard 란? Linear Classification의 NP-hard 문제

머신러닝 이론 공부 중, Linear Classification의 문제점으로 NP-hard 문제가 나왔는데 뭔지 짚고 넘어가고자 포스팅한다. 사전 지식 결정성(deterministic) 알고리즘 VS 비결정성 알고리즘 1) 결정성 알고리즘 : input에 따라 결과가 정해져있는 알고리즘. 즉, A -> B로 결정되어 있는 알고리즘이다. 2) 비결정성 알고리즘 : 답이 유일하게 결정되지 않는 알고리즘이다. A -> B,C,D 인지 정해지지 않음. NP의 반대 개념, P (polynomial) NP전에 우선 P를 알아야 한다. P는 결정론적 (deterministic) 알고리즘을 사용해서 다항 시간 내에 답을 구할 수 있는 문제의 집합이다. 즉, P는 yes/no 로 답할 수 있는 문제이다. ​​ # NP ..

Tech 2021.04.19

SQL DATE 타입 insert 하기

방법 1. 일/월/년 순으로 입력 > INSERT INTO {테이블명} values ('김윤서', '05/03/2000') 방법 2. 년-월-일 순으로 입력 > INSERT INTO {테이블명} values ('김윤서', '2000-05-03') 명시되지 않은 시간 분/초는 default값이 12:00:00으로 입력됨. 원하는 포맷으로 저장하고 싶을 경우 방법 3. > ALTER session set NLS_DATE_FORMAT = 'DD/MM/RR HH:MI:SS'; DATE 의 format (NLS_DATE_FORMAT)을 변경시킨 후 > INSERT INTO {테이블명} values ('김윤서', '2000/03/05 12:10:17'); 입력. 방법 4. > INSERT INTO {테이블명} va..

Tech 2021.04.16

Nodejs TypeError: Cannot read property undefined 해결 방법

오류 상황 template.js 파일에서 html 코드를 return 하는 함수 templateHTML()를 exports 하고, main.js 파일에서 require(./template.js)를 통해 받아서 templateHTML() 함수를 사용하려고 하는데 아래와 같은 에러가 발생했다. TypeError: Cannot read property 'templateHTML' of undefined 아래 방법들을 통해 해결했다. 방법 1. module.exports = HTML 를 소스 코드 가장 아래로 내리기 HTML 정의 후에 export 하도록 해주는 것이다. 방법 2. main.js 에서 불러오는 코드를 아래처럼 변경한다. var HTML = require('./template.js'); // 새로운..

Tech 2021.04.07

Nodejs `JavaScript heap out of memory` 오류 시 해결방법

nodejs 웹페이지를 구현할 때 콘솔창에 node main.js 를, (main.js는 내가 만든 js파일 이름) 검색엔진에 localhost:3000 을 입력해서 페이지로 이동한다 (3000 은 내가 지정한 포트번호) ​ 그런데 아래와 같이 콘솔창에 에러 메시지가 뜨면서 웹이 안뜬다면 JavaScript heap out of memory 오류가 발생한 것이다. 이 오류는 과도한 메모리 점유로 인하여 js 엔진이 폭발한 것인데, 이럴 때는 더 큰 메모리를 할당해주면 된다. 1. JavaScript heap out of memory Nodejs의 기본 메모리 사이즈를 512MB 초과하면 자동으로 앱이 종료된다. 기본 메모리 사이즈를 늘리는 방법에 대해서 알아보자. 커맨드라인 환경에서는 node --max..

Tech 2021.04.07

IntelliJ `Cannot resolve symbol` 에러 해결 방법 총정리

잘만 돌아가던 프로젝트에 온갖 빨간 줄이 그어졌다. 에러 내용은 "Cannot resolve symbol.. " 사실 이 에러는 IntelliJ IDEA에서 잊을 만 하면 나오는,, 그만큼 자주 보이는 에러이다. 다시 말해 아래와 같이 import가 제대로 안 돼서 생긴 에러이다. import org.springframework.beans.factory.annotation.Autowired; build.gradle 을 뒤져봐도 잘못 된 게 없어보이고,, 이런 어이없는 이유로 시간 낭비하는 게 너무 짜증나서, 해결하고 이번에 따로 정리해두기로 했다. 해결 방법 1번째 방법: 빌드를 다시 한다. 상단 메뉴바 Build > Clean Project 하고 나서, Build > Rebuild Project 2번째..

Tech 2021.02.27