본문 바로가기
반응형

전체 글1072

[Mysql] 스토리지 엔진 MYISAM / INNODB Mysql의 스토리지 엔진으로 가장 많이 사용하는 MyISAM, InnoDB을 비교해볼 것이다. MYISAM read only 기능에 특화된 엔진으로 select 가 많을 경우에 사용하곤 한다. 항상 테이블에 row count 를 갖고 있기에 가능하고, 풀텍스트 인덱스를 지원한다. 하지만 row level locking이 지원되질 않아 쿼리를 날릴 경우 해당 Table 전체 락이 걸린다. INNODB MYISAM 에서 안되는 row level locking이 가능하여 트랜잭션 처리가 필요한 대량 데이터에 유리하다. 또한 그럼으로써 select 보다는 CUD 의 쿼리에 좀더 장점이다. 역으로 MYISAM 과는 다르게 풀텍스트 인덱스가 지원이 안된다. 트랜잭션 처리가 필요없고 운영에 Read only 기능이.. 2022. 11. 5.
2PC 란? Two Phase Commit 의 약자인 2pc는 CQRS 의 패턴과 비슷하게 트랜잭션이 실패할 경우 rollback을 대비해서 존재하는 것이다. CQRS 에 대해서는 아래 참고 포스팅을 참고 하면 된다. CQRS에 비해서 2pc는 어떻게 보면 더 간단하다고 생각이 들수도 있지만. 트랜잭션의 유형에 따라 , 상황에 따라 CQRS 를 사용해도 되고 2pc를 사용해도 된다. 그럼 이 2pc는 처음 시작하는 트랜잭션부터 끝나는 지점까지 모든 작업이 실패가 없이 이루어 진다면 그때 한번에 쿼리를 날리고 commit 을 하게 된다. 그렇게 된다면 rollback을 할일이 없어져 트랜잭션이 꼬이는 부분에서는 해결이 된다. - 시작 : 독립적인 일을 시작하는 것 - 끝 : 준비 이전까지 일을 끝내는 것 - 준비 - .. 2022. 11. 4.
교착상태 / 기아상태 교착상태(Deadlock)란 서로 다른 프로세스가 서로 점유하고 있는 자원의 반납을 대기하고 있는 상태를 의미한다. 발생조건 상호 배제: 한 번에 한 프로세스만 해당 자원을 사용할 수 있어야 함 점유 대기: 할당된 자원을 가진 상태에서 다른 자원을 기다림 비선점: 다른 프로세스가 자원의 사용을 끝낼 때 까지 자원을 뺏을 수 없음 순환대기: 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음 해결방법 예방: 4가지 조건 중 하나라도 만족되지 않도록 함 회피: 알고리즘을 데드락이 발생하지 않도록 함 회복: 교착상태가 발생할 때, 해결함 무시: 회복과정의 성능저하가 심하다면 그냥 무시 기아상태(Starvation)란 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스가 영.. 2022. 11. 3.
git / github 차이 이전 포스팅에서 git에 대해서 다룬글이 있다. 아래 참고 포스팅을 참고하면 되고 이번 포스팅에서는 둘의 차이를 설명하고자 작성한다. git 오픈 소스 버전 관리 시스템(VCS: Version Control System) 로컬에서 버전 관리 소프트웨어 개발 및 소스 코드 관리에 사용 git은 본인의 코드와 그 수정내역을 기록하고 관리하도록 돕는 버전 관리 프로그램이며, 로컬에서 프로젝트의 기록을 스스로 관리할 수 있도록 해줌 git을 통해 브랜치를 생성하고 이전 브랜치로 복구, 삭제, 병합이 가능하지만 로컬 저장소를 사용하기 때문에 다른 개발자와 실시간으로 작업을 공유할 수 없음 github Git Repository를 위한 웹 기반 호스팅 서비스 클라우드 서버를 사용해서 로컬에서 버전 관리한 소스코드를.. 2022. 11. 2.
[github] 코드 보는법 github 를 통해서 코드를 다운 받거나 보게 될 경우 IDE에서는 트리구조로 나오지만 git에서는 파일 폴더 구조라서 불편함을 겪은분이 있을것이다. 아래 사진은 spring / mybatis 오픈소스 사이트에 관한 git 주소이다. https://github.com/mybatis/spring GitHub - mybatis/spring: Spring integration for MyBatis 3 Spring integration for MyBatis 3. Contribute to mybatis/spring development by creating an account on GitHub. github.com 사진을 보면 폴더 구조로 되어있어서 마냥 보기가 쉽지많은 않다. 이럴 경우에 url 주소에서 gi.. 2022. 11. 1.
flutter app bundle 서명 추가하는법 구글 스토어에 aab 파일을 올려야하는건 알겠는데 계속해서 android app bundle이 서명되지 않았습니다. 라는 에러가 나오면서 aab파일이 로딩이 되지 않으면서 괴롭혔다. 수많은 방법을 찾았지만 역시 해결이 되지 않았고, 계속 되서 반복되는 시도 끝에 마침내 해결이 되었다. 방법은 다음과 같다. 터미널에서 jks 파일을 만든다. keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key 다음 명령어로 jks 파일을 생성할수 있다. key.properties 파일을 생성한다. storePassword=passwd keyPassword=passwd keyAlias=key storeFile=/U.. 2022. 10. 31.
flutter app bundle 이전과는 다르게 이제 google playstore 에 앱을 올리려면 apk파일에서 appbundle 파일로 정책이 바뀌었다. 그래서 apk 파일은 build를 하면 되고 appbundle역시 build에서 하면 된다. 하지만 저번 포스팅에서 다룬적이 있는데(참고 포스팅 참조) flutter 2.0 부터는 null 제약조건이 들어가서 appbundle 을 만드는것이 쉽지 않다. Error: Cannot run with sound null safety, because the following dependencies don't support null safety: - package:webview_flutter For solutions, see https://dart.dev/go/unsound-null-saf.. 2022. 10. 30.
DevOps 에서의 Blue-Green 배포, A/B 테스트, Canary Release 이 순서는 무중단 배포 전략 이다. 요즘은 MSA 아키텍처를 많이 지향하고 있는 추세이다. 이런 트렌드에 맞춰 배포 전략도 다양하게 개발되고 발전하여 변화하고 있다. 이번 포스팅 살펴볼 내용은 여러가지 배포 전략과 테스트 방법이다. 롤링(Rolling) 일반적인 배포를 뜻하고 단순하게 서버를 구성하여 배포 하는 전략이다. 구버전에서 신버전으로 변환시 일반적으로 사용되며 미리 서버에 대한 파악이 되어야한다. 아래 그림을 보면 이해에 도움이 될것이다. 이러면서 배포가 진행이 된다. 일반적인 서비스 배포 과정에서는 지금까지는 잠시 서버를 중단 시키고 업그레이드를 하거나 하는 문제들이 많았다. 서비스가 중단되면 문제가 되거나 불편함 등에서 위험이 발생한다. 그렇기 때문에 무중단 배포 전략이 필요하게 되었고 그 .. 2022. 10. 29.
반복문 역순으로 돌기 python을 사용할때 반복문을 사용하기 위해서는 for i in range(10): 이런 식으로 사용을 하는데 거꾸로 역으로 작성을 해야할 일이 있다. 물론 10-i 로 진행을 해도 되지만 파이선의 기본 함수인 reversed 를 사용하면 편하게 구현할수 있다. for i in reversed(range(10)): 이렇게 작성해주면 된다. 2022. 10. 28.
반응형