프레임워크 14

MySQL 파티셔닝이란

* 모든 설명은 InnoDB 스토리지 엔진 기준으로 작성했습니다. 프로젝트에 스토리지 엔진이라는걸 설정한 적이 없다면, InnoDB가 기본값으로 적용되어있을 것입니다. 파티셔닝이란? 데이터의 특정 칼럼값을 기준으로 데이터를 분류하고, 분류한 데이터들을 서로 다른 물리적 파티션에 할당하는 것을 말한다.샤딩과 달리 나눠진 데이터가 동일한 데이터베이스 내부에 존재하므로 아래와 같은 편리함이 있다.- MySQL 서버 라우팅을 위한 추가 로직이 필요없다.- 파티션이 다른 데이터간에도 조인이 가능하다. (그렇다고 효율적이진 않다)똑같이 인덱스를 통해 쿼리를 처리하더라도, 데이터를 여러 파티션으로 분리하므로 인덱스 트리의 크기도 함께 작아지고 I/O의 범위가 작아지는 효과가 있다.파티션이라고 해서 테이블과 별반 다르..

AWS EC2에 MySQL 배포하기

도커 컴포즈로 서버랑 같은 컴퓨터에 DB를 띄우려고 씨름하다가, 내가 왜 확장성도 없이 이런짓을 하나 싶어서 DB를 별도 인스턴스로 분리하기로 결정했다. 그리고 DB 설정 오류 잡는데에 3일이 걸렸다.한번 설정 꼬이면 에러가 산으로 가서 인스턴스를 몇번을 지웠다 만들었는지 모르겠다.삽질을 하며 알아낸 것은 아래 스텝을 무조건 지켜야한다는 것이다. 1. EC2 인스턴스 생성Amazon Linux 쓰면 괜히 꼬이는 것같아서 ubuntu 이미지를 사용하였다.그리고 도커를 사용할 계획이라면, t2.small 이상을 선택해야 시스템 오버헤드를 감당하는 것 같다. 좀 내리면 네트워크 설정이 나오는데, 우측 상단의 편집을 눌러서 인바운드 / 아웃바운드 모두 IP, 주요포트를 열어주자. 인바운드 주요포트- 22 : 우..

프레임워크/AWS 2025.03.27

AWS ECR로 개인 repository에 도커 이미지 관리하기

Docker는 컨테이너를 만들어내는 이미지라는 틀을 가지고 있다.그리고 모든 이미지는 Docker hub에 'docker push' 명령어로 올려서 모두와 공유할 수 있다.하지만 이미지를 우리 팀만 써야하는 경우라면 Github에서처럼 private repository가 필요해진다.도커에 돈을내고 private repository를 만들수도 있지만, 프리티어가 적용되는 AWS ECR이라는 대안도 있다.ECR에 이미지를 올리고, 또 다운받는 과정을 정리해보았다. 1. 개발 컴퓨터에서 이미지 빌드하기docker build --platform linux/amd64 -t 이미지이름:태그 실행위치먼저 위 명령어로 이미지를 생성한다. 각 옵션과 아규먼트를 자세히 설명하면 아래와 같다. -t : 이미지의 이름과 태그..

프레임워크/AWS 2024.12.23

AWS Elastic BeansTalk 삭제 후에도 요금 청구되는 경우

Elastic Beanstalk (aka EBS)는 백엔드 배포를 위한 AWS 자원을 자동으로 생성하여, 신속한 배포를 돕는 서비스이다.EBS 자체에는 요금이 청구되지 않지만, 얘가 생성하는 AWS 자원들이 매우 비싸고, 프리티어 적용이 안되기 때문에 요금이 부담되는 경우가 있다. 문제는, EBS 콘솔에서 삭제를 누른다고 해도 관련 자원들은 삭제가 되지 않아 요금이 계속 올라간다.이런 경우 직접 자원을 정리해줘야하는데, 그 방법에 대해 정리해보려고 한다. 1. 청구서에서 자원 종류 및 region 확인우측 상단의 내 계정 정보를 누르고, '결제 및 비용관리'로 들어간다.  그럼 이렇게 총 요금이 보이지만, 어디서 요금이 발생했는지는 알수 없다.좌측 탭에서 '청구서'를 누르거나 스크롤을 내려보자. [+] ..

프레임워크/AWS 2024.12.23

Dockerfile에서 bash 명령 사용하기 | RUN, CMD, ENTRYPOINT 차이

도커는 이미지라는 틀을 만들고, 이를 사용해서 가상 머신을 만들어내는 식으로 동작한다.이때 이미지를 정의하기 위해 Dockerfile을 문법에 맞게 적어줘야하는데, 여기서 쉘 명령어를 사용하기가 여간 까다롭지 않다.도커파일에서 쉘 명령어를 입력하는 형식과, 사용할 수 있는 커맨드의 종류 두가지를 모두 정리해보았다. 1. Shell form과 exec formDockerfile 예시를 읽다보면 똑같은 일을 하는 명령을 두가지 방법으로 적어놓은 것을 볼 수 있다.FROM centos:7# 컨테이너 실행 직후 컨테이너에 running... 이라는 문구를 두번 출력한다.CMD "echo 'Hello from shell form!'; exec bash" # shell formCMD ["/bin/bash", "-c..

compiler version error 원인

아래와 같은 에러가 발생했고, 세부적으로는 NoSuchMethodError 유형이라고 떴다. > A failure occurred while executing org.jetbrains.kotlin.compilerRunner .GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction 더보기 java.lang.NoSuchMethodError: 'void org.jetbrains.kotlin.cli.common.messages.MessageCollector.report$default(org.jetbrains.kotlin.cli.common.messages.MessageCollector, org.jetbrains.kotlin.cli.common.messag..

Android와 이미지 형식

Bitmap과 Vector 사진을 컴퓨터에 저장하는 형식은 크게 비트맵/벡터로 나눌 수 있다. 1. 비트맵방식 (Bitmap) : 그림을 아주 작은 화소(픽셀)로 분해하고 각 화소의 색상과 위치를 기록해 저장하는 방식. 비트의 지도라는 뜻으로 픽셀을 하나씩 채워가면서 전체를 표현한다. ex) JPG, PNG, GIF, WEBP 2. 벡터방식 : 그림을 구성하고 있는 점이나 직선, 곡선 등의 위치와 기울기 등을 산술적인 데이터로 기록해 저장하는 방식. 파일 하나로 여러 화면 밀도에 대응할 수 있어 apk 크기를 줄일 수 있다. 복잡한 이미지는 표현할 수 없어서 간단한 도형이나 로고 등에 주로 사용한다. API 20 이상에서부터 Vector Asset Studio로 SVG, PSD를 프로젝트에 벡터 이미지로..

CoordinatorLayout에서 겹쳐진 뷰의 터치 이벤트를 처리하는 방식

BottomSheet를 구현하는 도중, BottomSheet 뒤에 가려진 버튼들이 클릭이 가능해지는 버그가 있었다. 스택 오버플로우의 글을 읽고 바텀시트에 clickable="true"를 추가해서 간단히 해결했지만, CoordinatorLayout에서 터치를 가로채는 방식에 대해서 정리해야겠다는 생각이 들었다. coordinatorLayout에서 상위 뷰가 하위 뷰의 터치를 가로채는 동작은 아래에 보이는 CoordinatorLayout.Behavior 를 상속받아서 구현한다. public class CoordinatorLayout extends ViewGroup implements NestedScrollingParent2, NestedScrollingParent3 { ... public static ab..