공부

    CKA 자격증 취득을 위한 학습 방법 및 시험 팁 및 후기<img src=">

    CKA 자격증 취득을 위한 학습 방법 및 시험 팁 및 후기

    자격증 취득 이유cka를 통해 얻고자 하는 것은 쿠버네티스에 대해 아는 것과, 관리자로써 어느정도 필요한 능력과 검증할 자료를 가지고자 하기 위해서 이다. 인프라 DevOps 에 관심이 있기도 해서 공부할 겸 자격증을 취득하고자 했다.   학습방법1cka 강의를 검색하면 가장 많이 추천하는 Udemy 강의 를 신청했다. 강좌 후반부에 있는 Mock Exam은 최소 2번 이상 하는 것을 추천한다. udemy 에서 연습할 수 있는 실습환경인 kubekloud 도 제공해준다.     2따배쿠 강의 유튜브 구독 or 패스트캠퍼스 강의 유데미에서 이해안가는 내용을 따배쿠에서 들으면 도움이 된다. 즐겨찾기에 대해서도 공유해준다. 근데 이제는 시험에서 즐겨찾기 기능을 사용할 수가 없다. 즐겨찾기 기능 없이 문서 내에..

    [Gradle] Gradlew 빌드 시 gradle 다운로드 속도가 느릴 때

    이미지 빌드 중 ./gradlew 실행을 위해 gradle 다운로드하는데 시간이 너무 오래걸리는 문제가 있었다. 빠를때도 있고 느릴때도 있었는데 계속 기다릴 수 없기에... 해결해보는걸로 하자. 찾아보니 종종 배포파일 다운로드가 느리다는 것 같았다. 해결 방법으로는 다운로드 받는 gradle 주소를 변경해서 진행하면 된다. 파일 위치는 gradle/wrapper/gradle-wrapper.properties 에 있고 distributionUrl 에 있는 주소를 변경해주면 된다. Downloading https://services.gradle.org/distributions/gradle-[버전]-bin.zip Downloading https://downloads.gradle.org/distributions..

    [Spring] Thread Pool - pool size설정

    Thread Pool Thread Pool 은 여러 개의 쓰레드를 유지하고 관리하기 위해 사용된다. Thread Pool 의 사이즈 쓰레드를 불필요하게 많이 만들게 되면 메모리의 낭비가 심해지고 너무 적은 수의 쓰레드를 만들게 되면 효율성이 떨어진다. 쓰레드의 개수를 고정 시키는 것보다 서비스가 실행되는 CPU의 코어 개수에 따라 유동적으로 생성할 수 있도록 해주는 것이 좋다. 많이 생성하는 것이 아니라 어떤 작업을 처리하느냐에 따라 기준이 바뀔 수 있다. CPU 처리가 많은 경우 - CPU 코어가 N개인 경우 N+1만큼의 쓰레드를 생성해주면 최적에 가까운 성능을 낼 수 있다고도 한다. I/O 작업이 많은 경우 - N*2 만큼의 쓰레드를 생성해준다.

    [Querydsl] Resolved [com.querydsl.core.types.ExpressionException ~ ]

    selet 문에 내가 원하는 값으로 리턴하기 위해 Querydsl 에서 Projections.fileds를 사용하는데 다음과 같은 에러가 발생했었다. @Override public List getMasterIdList(Long memberId) { return jpaQueryFactory.select( Projections.fields(AnswerDTO.class, answer.answerId.as("answerId"), answer.answerId.count().coalesce(0L).as("answerCount")) ) .from(answer) .where(answer.mberId.eq(memberId)) .fetch(); } Projections의 경우 생성자 기반이 아닌 필드 기반으로 가져올 때 ..

    [Git] error: The following untracked working tree files would be overwritten by checkout:

    develop 브랜치에서 다른 feature 브랜치로 checkout 하는데 다음과 같은 에러가 발생했다. error: The following untracked working tree files would be overwritten by checkout: 해결방법 추적하지 않는 파일을 제거하면 된다. # == 적용하지 않고 무엇을 해야할 지만 보고 싶을 때 == git clean -fd --dry-run # 또는 git clean -fdn # == 적용하고 싶을 때 == git clean -fd

    [Spring] Spring 3버전에 Springdoc 라이브러리를 사용해 swagger 적용하기

    Springfox가 아닌 Springdoc으로 Swgger를 사용하는 이유 이전 Spring 에서 swagger를 사용할 때 springfox를 사용했는데 springdoc 에서 제공하는 swagger를 더 선호한다고해서 사용해보았다. springdoc는 webflux도 지원하며 더 사용하기 쉽다고 한다. Springdoc 사용하기 spring boot버전에 따라서 springdoc코드를 추가한다. spring boot 3버전부터 springdoc 2버전을 사용해야지 오류가 안난다. build.gradle //swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0' config 파일 Springdoc에서는 config..

    FCM(Firebase Cloud Messaging)

    FCM 사용 이유 플랫폼에 종속되지 않고 push 메시지를 사용할 수 있다. 서버를 경유해서 실시간으로 push 메시지를 받으려면 사용자는 서버에 항상 접속하고 있어야 하는데 이는 사용자의 기기의 배터리 및 네트워크 리소스를 크게 낭비한다. FCM을 사용하면 메시징 서버를 중간에 둠으로써 낮은 배터리와 적은 네트워크 사용만으로도 메시지를 실시간으로 처리할 수 있다. 또한 iOS, Andriod, Web 에 각각 push 메시지를 보내려면 각각의 환경별로 개발해야하는데 이를 하나로 통합하는 솔루션이다.     Notification Server - 모바일 기기에서 push 알림을 전송하는 서버 - FCM 사용  Client App- 사용자의 모바일 기기에 설치된 앱 - pu..

    [Spring] 멀티 모듈 사용하기 - 루트 프로젝트에 자식 의존성 추가하기

    [Spring] 멀티 모듈 사용하기 - 루트 프로젝트에 자식 의존성 추가하기

    멀티모듈 사용하는 이유 서버를 여러개(api용, batch 용 등)를 사용하면 프로젝트를 여러개 만들어 사용하는데 프로젝트를 여러개 사용하는 경우 공통 코드를 사용할때 모든 프로젝트의 코드를 수정해주어야 한다. 이러한 불편한 점을 해결하기 위해서 멀티모듈을 사용하고자 한다. 멀티 모듈을 사용하면 코드를 분리해서 사용하기에 프로젝트별 코드 관리가 용이하다. 루트 프로젝트 생성하기 모듈을 담기 위한 루트 프로젝트를 생성하고 루트 프로젝트 안에서 모듈을 추가한다. 루트 프로젝트는 하위 모듈을 관리하는 역할만 하기 때문에 src 폴더를 삭제해도 된다. 모듈 추가하기 project 우클릭 > new > module 모듈을 추가한다. 모듈 추가 후 자식 모듈과 통신을 위해 루트 프로젝트 settings.gradle..

    [AWS] Amazon linux 2023 에 MySQL 8.0 설치

    [AWS] Amazon linux 2023 에 MySQL 8.0 설치

    amazon linux 2023 AMI에 mysql 8.0 설치하는 것은 다른 AMI 들과 다르다. MySQL 설치하기 먼저 mysql 을 설치하고자 하는 인스턴스에 접속한다. ssh -i /path/my-key-pair.pem ec2-user@instance-public-ip Amazon Linux 에서 Mysql 을 찾는다. dnf search mysql repository 를 최신 버전으로 업데이트 한다. sudo dnf update 레포지토리 추가 sudo wget https://dev.mysql.com/get/mysql80-community-release-el9-4.noarch.rpm 다운받기 sudo dnf install mysql80-community-release-el9-4.noarch.r..

    [Git] master -> main 합치기 (덮어쓰기)

    [Git] master -> main 합치기 (덮어쓰기)

    로컬에서 프로젝트를 생성 후 깃 연결을 위해 git init 설정을 하면 master 브랜치로 생성되는데 Git Repository에서 프로젝트를 생성하면 main 으로 디폴트 브랜치가 생성된다. 기본 브랜치는 main 이기 때문에 push 나 pull이 제대로 되지 않는 경우들이 있다. 그래서 master 브랜치와 main 브랜치를 하나로 만들기 위해서 master 브랜치의 내용을 main으로 옮기고자 했다. 해당 방법은 main의 내용이 다 삭제됨으로 master와 동기화 하고 진행하는 걸 추천한다. git checkout master git branch main master -f git checkout main git push origin main -f