본문 바로가기
반응형

전체 글697

test code error - java.lang.NullPointerException: Cannot invoke "org.springframework.test.web.servlet.MockMvc.perform(org.springframework.test.web.servlet.RequestBuilder 오류 내용 java.lang.NullPointerException: Cannot invoke "org.springframework.test.web.servlet.MockMvc.perform(org.springframework.test.web.servlet.RequestBuilder)" because "this.mockMvc" is null 소스 package kr.pe.acet.acetrestapi.index; import kr.pe.acet.acetrestapi.common.RestDocsConfiguration; import org.junit.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.. 2022. 3. 24.
Spring Rest Docs 사용하기 api 개발 시에 문서화를 해서 이해관계자에게 전달을 하거나 개발자들간에 공유를 하거나 한다. 이런 문서는 wiki 나 다른 기업에서는 doc이라던지 심지어 한글이라던지 문서를 만들어서 공유한다. 문서화는 개발자한테 정말 곤욕이였다. 개발하기도 바쁜데 문서까지 신경써야 하니 말이다. 혹은 개발은 해놓고 문서와의 동기화가 매번 늦거나 까먹거나 하는 경우가 빈번하게 일어난다. 그래서 문서화를 좀 더 쉽게 하기 위해 아주 오래전엔 javaDocs라고 메소드 위에다가 설명 넣고 만들어줬던 기억이 어렴풋이 난다. 내가 본 근래에는 swagger를 많이 사용하는것 같다. 그런데 이번에 새롭게 알게된 RestDocs라는것을 소개해보려고 한다. https://techblog.woowahan.com/2597/ 위에서 보.. 2022. 3. 22.
HATEOAS(Hypermedia as the engine of application state) HATEOAS(Hypermedia as the engine of application state) You will build a hypermedia-driven REST service with Spring HATEOAS: a library of APIs that you can use to create links that point to Spring MVC controllers, build up resource representations, and control how they are rendered into supported hypermedia formats (such as HAL). HAL이 좀 더 궁금하다면? 클릭 더보기 Hypertext Application Language HAL is a simp.. 2022. 3. 15.
Junit5 - 파라미터처리로 중복 제거! 중복적인 코드를 제거하기 위해 파라미터 처리를 하여 테스트 코드를 수정. @Test public void testFree(){ // Given Event event = Event.builder() .basePrice(0) .maxPrice(0) .build(); // When event.update(); // Then assertThat(event.isFree()).isTrue(); // Given event = Event.builder() .basePrice(100) .maxPrice(0) .build(); // When event.update(); // Then assertThat(event.isFree()).isFalse(); // Given event = Event.builder() .basePr.. 2022. 3. 12.
Spark - 파티셔너(Partitioner)&셔플링(shuffling) 파티셔너에 의해 RDD 파티셔닝이 실행된다. 파티셔너는 파티션 인덱스를 RDD 엘리먼트에 할당한다. 동일 파티션에 존재하는 모든 엘리먼트는 동일한 파티션 인덱스를 가질 것이다. 스파크는 HashPartitioner와 RangePartitioner라는 두개의 파티션이 있다. (사용자 정의 파티셔너도 구현 가능!) HashPartitioner Spark의 기본 파티셔너이고, RDD 엘리먼트의 각 키에 대한 해시값을 계산한다. 동일한 해시 코드를 가진 모든 엘리먼트는 다음 코드처럼 동일 파티션을 얻는다. hashCode()를 사용해 3으로 설정된 파티션 개수를 기반으로 각 엘리먼트마다 partitionIndex를 얻을 수 있다. RangePartitioner RangePartitioner는 RDD를 거의 동일.. 2022. 3. 10.
git - 중요한 file을 모르고 push했을땐? 1. 임의로 test.pem을 생성하여 push하였다. 2. test.pem이 알고봤더니 정말 중요한 파일 이였다! 예를 들어 나의 비밀번호들이 저장되어있다..!! 3. 삭제를 하기 위해서는 아래와 같은 git filter-branch명령어를 사용 합니다. git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch src/main/resources/test.pem' --prune-empty -- --all git rm --cached는 원격지 브랜치에 있는 파일을 삭제 해줍니다. git rm 로컬과 원격지 둘다 삭제. 여기에는 로컬에는 남아있어도 되지만 원격지에 올라가면 안되기때문에 --cached 옵션을 사용한 것이다. --ignore-.. 2022. 3. 3.
Spark - RDD? RDD(Resilient Distributed Dataset)는 불변이며, 분산 컬렉션 객체이다. 불변성 특성때문에 한번 생성된 RDD는 읽기 전용이다. 즉, 트랜스포메이션(Transformation)은 RDD에서 새로운 RDD로 생성할 수는 있지만, 원본 RDD는 생성된 후에는 결코 수정되지 않는다. 그러므로 RDD는 경쟁조건과 기타 동기화 문제에 영향을 받지 않는다! RDD는 데이터에 대한 참조만 포함하기 때문에(실제 데이터는 클러스터의 노드에 있는 파티션에 포함) RDD의 분산 특성이 동작할 수 있다. RDD는 실제로 클러스터에서 파티션으로 나워진 데이터셋이고, 파티션 데이터는 HDFS, HBase, Cassnadra, AWS S3에서 가져온 것일 수 있다. RDD는 다음과 같은 5가지 주요 속성을.. 2022. 3. 3.
AWS - 무중단 배포를 위한 NginX를 사용해보자 1. ec2에 nginx install 먼저 sudo yum update -y로 업데이트 한 뒤 sudo yum install nginx 를 하면 아래와 같은 오류가 발생한다. sudo amazon-linux-extras install nginx1으로 다시 해보자. [ec2-user@acet-springboot-webservice ~]$ sudo amazon-linux-extras install nginx1 Installing nginx Loaded plugins: extras_suggestions, langpacks, priorities, update-motd Cleaning repos: amzn2-core amzn2extra-docker amzn2extra-kernel-5.10 amzn2extra-n.. 2022. 3. 1.
git push error git에 push를 하려는데 아래와 같은 오류 발생! rejected!! 대~충 읽어보니 git push전에 git pull을 하라고 한다 git push -u origin master To https://github.com/pthahaha/rest-api-study.git ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/pthahaha/rest-api-study.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Inte.. 2022. 2. 25.
Travis CI(유료..-_-) + AWS(S3, CodeDeploy) 연동 오늘은 저번 시간에 Travis CI 무료인줄 알았는데 유료인 친구를 셋팅 한 뒤 이제는 AWS와 연동을 해보려고 합니다. 우선적으로 AWS S3라는것이 있는데 이녀석은 "파일서버"라고 보시면 됩니다. 보통 이미지 업로그 구현 시 S3로 구현하는 경우가 많다고하네요 그리고 실제 Deploy는 CodeDeploy라는 서비스를 이용합니다. 그러나 이녀석은 저장기능이 없기때문에 우리는 S3에 우리가 만든 app jar파일(빌드 결과물)을 S3에 저장했다가 CodeDeploy가 가져가서 배포할 수 있도록 합니다. 정리하면 Travis CI(빌드) - S3(잠시 저장) - CodeDeply(저장된거 가져가다가 배포) 이렇게 되겠군요 시작해보겠습니다. 1. AWS Key 발급 AWS 서비스에 외부 서비스가 접근할 .. 2022. 2. 21.
aws+Travis CI 연동 Travis CI는 깃헙에서 제공하는 무료 CI 서비스이다. 젠킨스와 같은 CI 도구지만 젠킨스는 설치형이기 때문에 이를 위한 EC2 인스턴스가 하나 더 필요 합니다. 빠르고 심플하게 오픈소스 웹 서비스인 Travis CI를 연동해보겠습니다. 또한 AWS에서 Travis CI와 같은 도구로 CodeBuild를 제공 합니다. 하지만 빌드 시간만큼 요금이 부과되는 구조이며 실제 서비스되는 EC2, RDS, S3 외에는 비용 부분을 최소화하는것이 좋을듯 보입니다. 1. Travis CI 웹서비스 설정 https://travis-ci.com 에서 깃헙 계정으로 로그인을 합니다. 로그인을 하면 아래와 같이 힙합씬의 렙 잘하게 생긴 캐릭터가 격하게 반겨줍니다. 빨간 글씨 보이시죠? ㅋㅋ 일단 빨간 문구는 무시하고 .. 2022. 2. 19.
aws EC2 서버에 프로젝트 배포하기(진행중) EC2서버에 프로젝트를 배포하기 위해 필요한것은? 프로젝트 소스!! 소스를 가져오기 위해 git을 셋팅 해준다. sudo yum install git git이 잘 깔려져있으니 이제 git clone을 해서 소스를 가져오자! git clone https://github.com/pthahaha/momistock.git 아래는 project 내용 ./gradlew test 이런 테스트 오류로 일시정지! ㅋ 2022. 2. 4.
aws db연동을 해보자! use acet_database; show variables like 'c%'; -- 캐릭터 셋 변경 alter database acet_database character set = 'utf8mb4' collate = 'utf8mb4_general_ci'; -- 타임존 확인 select @@time_zone, now(); -- 한글 체크를 위해 테이블 생성 create table test( id bigint(20) not null auto_increment, content varchar(255) default null, primary key (id) ) engine=InnoDB; -- 한글을 하나 넣어본다. insert into test(content) values ('테스트'); -- 한글이 잘 들어가.. 2022. 2. 4.
docker 빌드로 이미지를 만들어보자!(작성 중) docker로 이미지를 만들어보자! 우선 도커파일이 필요하다! 도커파일 안에는 예를 들어 아래의 포맷으로 구성되어져있다. FROM : 이미지를 생성할 때 사용할 기반 이미지를 지정. openjdk:8-jdk-alpine 라고 하면 알파인 OS에 JDK 8을 설치한 이미지 이다. RUN : 이미지를 생성할 때 실행할 코드를 지정한다. 아래에서는 패키지를 설치하고 파일 권한을 변경하기 위해 사용. WORKDIR : 작업 디렉토리를 지정. 해당 디렉토리가 없으면 새로 생성한다. 작업 디렉토리를 지정하면 그 이후 명령어는 해당 디렉토리를 기준으로 동작한다. COPY : 파일이나 폴더를 이미지에 복사한다. 상대경로를 사용할 경우 WORKDIR로 지정한 디렉토리를 기준으로 복사한다. ENV : 이미지에서 사용할 환.. 2022. 1. 25.
aws에서 타임존 및 호스트명을 변경해보자! EC2서버의 기본 타임존은 UTC 입니다. 이는 세계표준 시간으로 한국의 시간대가 아닙니다. 즉, 한국과 9시간의 차이가 발생!! 그러므로 한국시간으로 변경 해야합니다. 변경방법 sudo rm /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 확인 HOSTNAME 변경 아래의 방법으로 sudo hostnamectl set-hostname acet-springboot-webservice를 해줌. hostname 해주니 잘 반영되었다. sudo reboot이 아닌 나갔다가 다시 접속하니 아래와 같이 잘 반영되었다!! 아래의 방법은 해봤다가 삽질...변경이 안됐다! 참고 : https://docs.aws.amazon.com/ko_k.. 2022. 1. 25.
aws에 jdk install 하기 yum list java*jdk-devel 로 리스트를 가져왔더니..아래와 같이 2개의 패키지가 조회 되었다. 11로 셋팅하려고 했는데 안보이네.. 찾아보니 아래와 같은 방법이 있었다. 11버전을 깔아보자! rpm을 다운! # aws coreetto 다운로드 sudo curl -L https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm -o jdk11.rpm # jdk11 설치 sudo yum localinstall jdk11.rpm # jdk version 선택 sudo /usr/sbin/alternatives --config java # java 버전 확인 java --version # 다운받은 설치키트 제거 rm -rf .. 2022. 1. 25.
aws ssh 접속 불가 현상 위와 같이 ssh 접속을 하려는데 접속이 안되는 현상이 발생했다. ip가 고정이라면 괜찮지만..유동 아이피라면 아래처럼 열어놔서 해결하거나 매번 내 아이피로 수정해주면 된다. 내 IP를 선택 되어있는것을 Ipv4로 변경! aws에 요런 기능이 있었구만! ㅋ 저장 후에 다시 접속해보면 이제 어디서든 접속이 잘된다. .ssh에 있는 pem이 있어야 접근이 가능하니 안심하고 변경하자! 2022. 1. 25.
aws 서버구축 1. 회원가입 한다. https://aws.amazon.com/ko 2. 콘솔에 로그인해서 EC2 인스턴스를 만든다. EC2란? Elastic Compute Cloud의 약자이며 AWS에서 제공하는 서버라고 보면 된다. 학생 또는 개인 개발이 목적이면 걍 무료로 진행하면 된다. 딱 보면 무료처럼 보이는게 있다ㅋㅋ 3. 인스턴스를 만들기전 유의사항! 리전을 골라야한다. 미국쪽으로 디폴트로 되어있다. 한국쪽의 리전을 사용하는게 좋으니 서울로 골라준다. 이제 인스턴스를 시작해보자.(서버 구축 고고!) 아래의 사진처럼 Amazon Machine Image를 선택하자! 프리티어 가능한 사용하고 싶은 서버를 골라주면 된다. 서버하면 리눅스지! ㅋㅋ 선택 후 공짜 냄시가 나는걸로 선택하자. 킁킁~ T 시리즈는 범용 .. 2022. 1. 20.
aws 탄력 ip (public ip) 삭제하기 인스턴스와 탄력 ip의 연결은 해제했는데 완전삭제를 하지 못하였다. 찾아보니 요금이 부과 된다고 하여 완전 삭제를 하였다. 삭제 방법은 아래와 같습니다. 탄력적 IP 주소 릴리스!! 아래처럼 더 이상 계정에 할당할 수 없고 리소스에 연결할 수 없다고 합니다. 완전 삭제!! 릴리스를 하면 아래와 같이 사라진걸 볼수 있습니다. 끝! 2022. 1. 20.
helm chart storm 참고 : https://artifacthub.io/packages/helm/gresearch/storm helm chart를 통해서 아파치 스톰을 설치해보자! 쿠버네티스의 패키지를 한번에 다 설치해주기 때문에 뭐가(storm, zookeepr, ui, service, pod등) 어떻게 뜨는지 알수 있을 것이다. 당연히 k8s와 helm chart가 설치된 전제하에 아래를 보시면 됩니다. 가이드에 나온것과 같이 아래의 명령어를 쳐줍니다. $ helm repo add gresearch https://g-research.github.io/charts $ helm install my-storm gresearch/storm 원샷 원킬..이제 어떻게 띄워져있는지 보도록 하자! nimbus, supervisor, z.. 2022. 1. 19.
pv, pvc terminating 말고 완전 삭제하기! kubectl delete pv 으로 무심코 지웠는데... 완전 삭제가 아닌 terminating으로 나왔다. kubectl delete pv --grace-period=0 --force 이후 kubectl patch pv -p '{"metadata": {"finalizers": null}}' 를 해주면 완전히 삭제 된다. 2022. 1. 11.
반응형