프로그래밍
프로그래밍/Database
2020. 5. 12.
[MySQL] MyISAM과 InnoDB_MySQL storage engine
2020/05/09 - [프로그래밍/Database] - [MySQL] Lock wait timeout exceeded [MySQL] Lock wait timeout exceeded 기존에 정상적으로 동작하던 API에서 간헐적으로 Timeout Error가 발생하기 시작했다. Cloudwatch Log에서 다음과 같은 에러 메시지를 확인하였고, 외부 연동 포인트가 아닌 DB에서 발생한 문제 임을 알�� jaenjoy.tistory.com 지난 Lock wait timeout exceeded 포스팅에서 언급한 적이 있던 innodb에 대해 설명해보고자 한다. Storage Engine 스토리지 엔진(Storage Engine)이란 물리적 저장장치에서 데이터를 읽어오는 역할을 담당하는 부분이다. "데이터를 ..
프로그래밍/Database
2020. 5. 9.
[MySQL] Lock wait timeout exceeded
기존에 정상적으로 동작하던 API에서 간헐적으로 Timeout Error가 발생하기 시작했다. Cloudwatch Log에서 다음과 같은 에러 메시지를 확인하였고, 외부 연동 포인트가 아닌 DB에서 발생한 문제 임을 알게 되었다. Lock wait timeout exceeded; try restarting transaction Lock Timeout이 발생하는 원인 1. Transaction 수행 시간이 긴 경우 Lock Timeout이 발생하는 것은 하나의 Transaction이 처리되는 데에 시간이 오래 소요되는 경우이다. 실제로 에러가 간헐적으로 발생하는 API는 Bulk 요청이 주로 이뤄지는 API들이다. Bulk 요청이기 때문에 Transaction 관리를 보다 철저하게 처리해주었는데, Tran..
프로그래밍/Programming
2020. 5. 5.
[Same-Origin Policy] Local 환경에서 CORS policy 에러 해결하기
상황은 이러했다. 서비스 구축이 우선이었기 때문에 관리자용 페이지가 아직은 마련되지 않았다. 일일이 API를 호출해서 향후 Admin Site에서 입력하게 될 필요한 정보들을 추가할 수도 있었지만, 사용성을 높이고 팀 내 개발자들과 기획자들 모두가 사용할 수 있게끔 HTML로 임시 페이지를 만들어두는 것이 좋을 것이라 생각했다. 위의 에러 메시지는 블로그를 작성하기 위해 임시로 만든 파일이고, 경로이기 때문에 콘솔의 에러 메시지 경로이지만.. 작성한 html 파일을 로컬에서 Chrome 브라우져로 실행을 시키니, CORS 관련 에러가 나타나면서 static한 html 파일의 형태만 그려지고, 아무런 동작이 되지 않았다. 에러가 발생한 이유는? Same Origin Policy 구글에서 위와 같은 에러 메..
프로그래밍/IoT
2020. 5. 2.
[AWS IoT] IoT Device 인증 방법 (IoT 인증서)
대부분의 서비스 설계 과정에서 가장 중요하게 다루는 부분이 인증이다. 인증에 대한 고민은 IoT 서비스에서도 마찬가지로 매우 중요한 부분을 차지한다. AWS IoT 인증서 생성 방법 AWS IoT에서는 X.509 인증서를 사용하여 IoT Thing에 대한 인증을 처리한다. X.509 인증서의 생성 방법을 AWS Console 화면을 통해 순서대로 알아보겠다. 1. 인증서는 보안 > 인증서 메뉴에서 관리한다. 아무런 인증서가 없는 상태에서는 위와 같은 화면이 나타난다. 인증서 생성 버튼을 클릭하여, 다음 단계로 넘어가보자 2. 인증서 생성 옵션 AWS IoT에서 기본적으로 제공하는 인증서 생성의 종류는 3가지이다. 원클릭 인증서 생성은 AWS IoT의 인증 기관을 이용하여 X.509 인증서를 발급받는 것이..
프로그래밍/Programming
2020. 4. 26.
프레임워크(Framework)와 라이브러리(Library)의 차이점
Express.js는 Node.js에서 가장 많이 사용되고 있는 "Web Framework"이다. React.js는 웹 서비스 중에서도 사용자 인터페이스 개발을 위해 사용되는 "Library"이다. 각각의 공식 문서에서도 명확하게 프레임워크와 라이브러리를 구분하여 사용하고 있는 만큼, 두 개념에는 확실한 차이가 있다. Framework (프레임워크) 프레임워크는 "기반 구조"를 의미하는데, 제어의 역전(IoC)이 적용된 대표적인 기술이다. 프레임워크는 Application 개발을 위한 기본적인 로직을 "뼈대"의 차원에서 제공해주는 것이다. Express.js와 같은 프레임워크는 단지 기본 틀만 제공해주기 때문에 실제 Application의 구동을 위한 코드를 직접 작성해줘야 한다. 프레임워크가 제공해주는..
프로그래밍/IoT
2020. 4. 19.
[IoT] Thing Management 01_IoT Device의 관리 기준
AWS IoT에 대해 언급한 지난 포스팅에서 첨부한 그림과 함께 다시 한번 IoT Device 관리 관련 포스팅을 시작해보고자 한다. 2020/04/09 - [프로그래밍/IoT] - [IoT] AWS IoT로 IoT 서비스 개발 시작하기 Web Service와 IoT Service의 가장 큰 차이점은 "Device"라고 생각한다. Application을 사용하는 End User의 존재는 동일하기 때문에 User를 관리하는 방법에 대해서는 Service의 종류와 무관하게 동일할 것이다. 하지만, IoT(Internet Of Things) Service는 그 이름에서도 알 수 있듯 Things(사물)를 자원(Resource)으로 여기고 이를 어떻게 관리(Management)할 것인지가 중요한 부분이 될 것이..
프로그래밍/Node.js
2020. 4. 19.
[JavaScript] 기본 매개변수 (Default Parameters) 정확하게 사용하기!
Default Parameters Default Parameter를 사용하면 주어진 값이 없거나 undefined가 전달될 경우, 매개변수를 기본값으로 초기화할 수 있다. /* * Sample Code 1 */ function defaultParams(arg) { console.log(arg); }; defaultParams(); // undefined 위의 샘플 코드를 보면 JavaScript에서 함수의 매개변수가 기본적으로 undefined임을 알 수 있다. 또한, 위 코드를 통해 JavaScript에서는 함수의 인자에 필수값 여부를 설정하는 구분값이 없기 때문에 함수를 선언할 때 parameter를 선언했다고 할 지라도 실제 함수를 호출하는 구간에서 해당 parameter에 값을 넣지 않는다고 해도..
프로그래밍/Database
2020. 4. 15.
In-Memory Cache (인-메모리 캐시)
In-Memory Computing 인-메모리 컴퓨팅이란 Application이 운영을 위한 데이터를 하드 디스크가 아닌 메인 메모리에서 수행하는 것을 말한다. 즉, 연산을 위한 영역으로만 여겨졌던 메모리 영역을 대량의 데이터를 저장하여 처리할수 있는 공간으로 사용하는 것이다. 기술적/비용적 측면에서는 과거 Main Memory의 가격이 상대적으로 높았기 때문에 Memory 영역을 사용하는 것이 불가능/비효율적이었지만, Memory의 가격이 낮아진 오늘 날에는 가능해지고, 보편화된 기술이 되었다. In-Memory 컴퓨팅/아키텍쳐는 데이터의 절대적인 양과 종류가 폭발적으로 증가한 빅데이터 시대에 데이터 처리 속도를 향상시킬 수 있는 핵심 기술로 평가받고 있다. 왜 Cache를 사용하는가? Cache(캐시..
프로그래밍/Node.js
2020. 4. 14.
[JavaScript] Strict Mode란?
'use strict'; Strict Mode란 ECMAScript 5에서 소개된 것으로 JavaScript로 작성된 코드가 제한된 버전을 선택하여 작성하게끔 하는 방법이다. Strict Mode에서는 기존에 조용하게 무시되던 에러들(Silent Errors)이 Error로 Throw될 수 있도록 처리가 된다. JavaScript의 장점이자 단점인 엄격한 방식의 코드 작성의 결핍을 일부 채워줄 수 있는 방법이 된다. 비슷한 맥락에서 JavaScript Engine의 최적화 작업이 어려워지는 일부 코드 상의 실수들을 바로잡을 수 있도록 지원한다. 간혹 Strict Mode 하에서 작성된 JavaScript 코드가 그렇지 않은 코드보다 빨리 작동하기도 한다. Strict Mode라는 표현과 같이 JavaSc..