트랜잭션 트랜잭션이란, 논리적인 작업 셋(Set)을 완벽하게 처리하거나 반대로 실패할 경우 원 상태로 전부 복구하는 기능이다. 그래서 작업의 일부만 적용되는 Partial Update 가 일어나지 않도록 한다. MySQL 에서의 트랜잭션 스토리지 엔진 중 MyISAM 이나 MEMORY 같은 스토리지 엔진은 트랜잭션을 지원하지 않는다. 트랜잭션이 없어서 사용하기 단순할 것 같지만, 오히려 더 많은 문제를 만들어낸다. 일부 과정이 실패했을 때 생기는 Partial Update 같은 문제는 더 복잡한 후속조치 과정을 양산할 뿐이다. InnoDB 스토리지 엔진은 트랜잭션을 지원하기 때문에 논리적인 작업들의 단위가 전부 반영되거나, 전부 반영되지 않는 것을 보장한다. 트랜잭션 적용 시 주의사항 트랜잭션은 트랜잭션..
CodeDeploy 배포 실패 error log 가 없는 경우 CodeDeploy 로 배포 플로우를 구축하다보면 배포가 실패하는 경우가 있습니다. 보통은 에러 로그를 확인하기 위해서 아래와 같이 View events 로 접근하여 확인합니다. 하지만 다음과 같이 아무런 에러 로그가 남지 않는 경우가 있습니다. instance 에서 확인하기 이럴 때는 보통 deploy 를 시작하기도 전에 실패한 경우라서, Agent log 를 확인해보면 됩니다. 해당 EC2 인스턴스의 다음 경로에서 에러 로그를 확인할 수 있습니다. /var/log/aws/codedeploy-agent/codedeploy-agent.log 제 경우는 다음과 같은 에러 로그가 있었는데요. InstanceAgent::Plugins::CodeDe..
MySQL 아키텍처 MySQL의 전체 구조 MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분해서 볼 수 있다. MySQL 엔진 : 클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러, SQL 파서 및 전처리기, 그리고 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 또한 성능 향상을 위해 캐시나 버퍼 풀과 같은 보조 저장소 기능이 포함돼 있다. 스토리지 엔진 : 위의 MySQL 엔진이 쿼리 분석 및 최적화 등의 두뇌 활동을 담당하고, 실제 데이터를 디스크에 저장하거나 디스크에서 데이터를 읽어오는 부분은 스토리지 엔진이 처리한다. MySQL 서버에서 MySQL 엔진은 하나지만 스토리지 엔진은 여러 개를 동시에 사용할 수 있다. 'CREATE TABLE test_ta..
서버 설정 my.cnf 설정 파일의 위치 MySQL 서버는 단 하나의 설정 파일만 사용하는데, 유닉스 계열에서는 my.cnf 라는 이름을 사용한다. 서버를 시작할 때만 해당 파일을 참조하는데, 지정된 여러 개의 디렉터리를 순회하면서 처음 발견된 my.cnf 파일을 사용한다. my.cnf 를 찾기 위해 순회하는 디렉터리 경로가 궁금하다면 다음의 명령어들로 확인해볼 수 있다. 단, mysqld 프로그램은 MySQL 서버의 실행 프로그램으로 해당 option 을 빠뜨리면 실제 서버를 기동할 수 있으니 두번째 명령어로 확인해 보는 것이 좋다. shell> mysqld --verbose --help shell> mysql --help 해당 명령어의 결과를 살펴보면 상당히 많은 내용 안에 다음과 같은 내용이 있다...
개요 이번 포스팅에서는 이터러블 프로토콜에 대해서 정리해 보겠습니다. 이터러블 프로토콜은 자바스크립트 ES6에서 순회와 관련한 핵심적인 개념으로, 이터러블 프로토콜을 중점으로 사고하면서 코드를 작성하면 많은 이점이 있습니다. 이터러블/이터레이터 Array 살펴보기 크롬 개발자 도구에서 콘솔창을 열고 배열 하나를 만들어 보았습니다. 해당 배열의 속성을 열어보면, 많은 항목들 중에 Symbol.iterator가 있는 것을 볼 수 있는데요. Symbol.iterator라는 Key가 가진 값이 함수라고 명시되어 있습니다. 이 함수가 바로 이터러블 프로토콜을 정의하는 친구입니다. 이터러블/이터레이터 프로토콜 이터러블의 정의는 다음과 같습니다. 이터레이터를 리턴하는 [Symbol.iterator]()를 가진 값 앞..