본문 바로가기
728x90

전체 글157

Kotlin Spring Boot docker file 빌드 배포 kotlin spring boot 로 개발하면서 jar 로만 배포하는 개발자들이 아직도 있어서 글을 작성! 이제는 docker 를 써야할때!!아래와 같이 프로젝트 내 dockerfile 을 생성한다. FROM azul/zulu-openjdk-alpine:17 as builderCOPY build.gradle settings.gradle gradlew ./COPY ./gradle ./gradleCOPY ./src ./srcRUN chmod +x ./gradlewRUN ./gradlew clean bootJarFROM azul/zulu-openjdk-alpine:17-jreCOPY --from=builder /build/libs/*.jar /app.jarEXPOSE 8080ENTRYPOINT ["java",.. 2024. 12. 5.
ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref : "/settings.gradle.kts": not found 도커를 사용하다가 빌드 시 아래와 같은 오류가 났다면!! ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref : "/settings.gradle.kts": not found 방법은 간단하다! 해당 파일이 없다는 뜻이며, 오류가 난부분이 copy 영역이면 확장자까지 고려하여 동일한 파일이 있는지 확인필요! 끝.. 2024. 12. 5.
1. Nest js 기본 (간략하게 집고 넘어가보자) Nest js 란?: 카밀 미슬리비에츠가 개발한 "node js 의 웹 프레임워크"로, WAS framework 인 Express 또는 Fasity 기반으로 OOP를 지향하며, 개발이 가능 하다.  Node js 란? (대부분 이미 알겠지만!): Javascript 의 런타임 환경으로 서버 사이드 개발을 지원 함  Node js 의 주요 특징은?  1) 비동기 단일 쓰레드(여러 I/O를 병렬적으로 처리가능, 고성능 서버 구축)  2) NPM(Node Package Manager) 를 이용하여 다양한 라이브러리를 쉽게 설치 및 사용 가능  3) 빠른 처리속도(가볍다, 필요한 것만 설치해서 사용가능)    4) 모듈화  5) 이벤트 기반   6) Javascript 기반  설치는? (version: LTS(.. 2024. 12. 5.
0. [과정을 들어가면서] 과정소개 0. 강의제작 배경 및 학습목표 - 국내에는 Nest강의가 Spring 에 비해 상대적으로 적음. - 많은 주니어 개발자들이 CRUD 등의 간단한 기능은 잘사용하는것으로 보이나, DB lock, redis, Kafka 와 연계하는 응용부분은 추가설명이 필요했음 - Nest 개발자 중에 TypeORM 기반이 아닌 실무에 적합한 Prisma 에 대한 이해도가 부족한 개발자들이 다수 보였음강의 이후 실무에 최대한 빠른 적응! or 레벨업! 1. Nest js 개발 관련 기본사항 1) Nest 장점 2) ERD 설계 3) 개발 architecture 4) OOP(Object-Oriented Programming) & FP(Functional Progra.. 2024. 12. 4.
코루틴에 대해서 ( about " Coroutine ") 코틀린 스프링에 적용하는 코루틴에 대해서 얼마만큼 알고 있는가?기본적인 내용을 간략 하게 정리해 보겠다. 코루틴!범 코틀린 라이브러리 중 하나이며, async, await, future, promise, actor 등을 이용하여 동시성 지원이 가능하다.추가로, 아래와 같은 동서성문제를 해결하는 기능들을 제공한다. 1. thread 의 가벼운 대안2. 유연한 thread dispatch3. 일시중단이 가능한 sequence와 iterator4. Channel 을 사용한 메모리 공유5. actor 를 통한 message 전송방식 지원 Java web mvc 기반을 고려하면(web flux 아님), 대부분의 동시성 연산이 블로킹(blocking) 처리된다.thread 를 블로킹 후 다시 실행을 이어가려면, c.. 2024. 12. 3.
이력서 작성은 이렇게 (feat. 구글이력서) 참고할만한 사이트를 공유한다. https://resumegenius.com/resume-samples/google-resume   미국 회사 취업에 사용했던 이력서 양식과 완전 동일한 이력서를 resumegenius 에서 보게 될 줄 이야...개인적인 이력서 공개는 개인보안 이슈로 인해 공유하기가 어려웠는데, 이렇게 sample 된 양식이 있어서 공유해본다. (다음에 기회가 되면 이력서 작성법도 다뤄보도록 하겠다.) 2024. 12. 2.
Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback. There was an unexpected error (type=Not Found, status=404) graphql expediagroup 해결하기 Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback. There was an unexpected error (type=Not Found, status=404) 라는 오류 본적이 있는가?(흔하게 봤을 것이다.)일반적인 경우는 쉽게 해결가능하다(말그대로 default page 든 아무것도 없기 때문이다.) 하지만, graphql 을 사용하는데, 제대로 세팅한거 같은데 위와 같은 오류가 발생할 경우!???이를 해결하기 위한 자료가 부족하기 때문에, 꼭 필요한 사람을 위해 글 작성을 해본다. 위와 같은 오류가 뜨는데, 여러가지 원인이 있겠지만,일반 SpringMVC.. 2024. 11. 29.
몽고디비 mongodb connection pool 에 대해서 몽고 db를 사용하는데 connection pool에 대해 이해없이 사용하다가,런타임 중 예상치 못한 에러를 마주하곤 하는데, 기본적으로 개발자라면 본인이 사용하고 있는 db 에 대한 이해와 이를 제어하기 위해 어떤 설정을 해야하는지는 알고있어야한다.알아야할 항목으로는 트랜젝션처리, 락처리 등이 될것이고, 또 DBCP라는게 있다. Database Connection Pool !백엔드 서버에서는 DB 에 CRUD 작업을 위해서, 작업할 때마다 DB에 연결하고 작업이 끝나면 연결을 끊고 하는 방식으로 세팅되어있지 않다.왜? 매번 필요할때마다 연결하고 끊게 되면은 그만큼의 지연 시간이 발생하기 때문이다.이러한 시간은 DB 에 접속명령어를 날려서 접속되고, 접속 종료명령어를 날려서 종료되는 시간과 거의 동일하다.. 2024. 11. 29.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schema' defined in class path resource [com/expediagroup/graphql/server/spring/NonFederatedSchemaAutoConfiguration.class]: Failed to instantiate [graphql.schema.GraphQ 제목과 같은 오류 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'schema' defined in class path resource [com/expediagroup/graphql/server/spring/NonFederatedSchemaAutoConfiguration.class]: Failed to instantiate [graphql.schema.GraphQLSchema]: Factory method 'schema' threw exception with message: Invalid query object type - no valid queries are available. 가 뜬다면!!?!.. 2024. 11. 28.
Failed to bind properties under 'graphql' to com.expediagroup.graphql.server.spring.GraphQLConfigurationProperties: 오류 해결 하기 expediagroup 에서 제공하는 graphql 을 처음 세팅하다보면 아래와 같은 오류 화면을 보게되는 경우가 있다. 당황하지 말자!!해결방법은 간단하다. application.yml 또는 application.properties에서 graphql 관련 설정을 추가하거나 수정하면 끝!graphql: packages: - "com.project.servername” 2024. 11. 28.
Java 버전 관리 하기 temurin 하나의 PC 에서 여러 자바 버전을 개발해야할 때,어떻게 하는가?매번 환경변수를 바꿔주던지, 다 설치해놓고 설치된 경로에 하나하나씩 연결하진 않는가? 이럴때 유용하게 사용할 수 있는 툴이 temurin 이다! [설치 - Mac]brew install --cask temurin@21brew install jenv 설치된 jenv 를 zshrc 에 등록해보자밑에 명령어를 입력해서 편집기로 접속하면 된다.~/.zshrc 편집기에서 하단의 내용을 추가하고 저장!export PATH="$HOME/.jenv/bin:$PATH"eval "$(jenv init -)" 그리고 밑에 명령어들을 하나씩 입력해주자//jenv 설정$ eval "$(jenv init -)"$ jenv enable-plugin export$ ex.. 2024. 11. 28.
type vs interface ( type 과 interface 차이 ) 객체의 상속 [interface]extends 키워드를 이용해서 상속받을 수 있다.(interface 는 상속을 통해 확장)interface 시험 { 점수: number; 등급: number;}interface 과목 extends 시험 { //시험 으로 부터 상속받아 과목에 추가 과목명: string;}const 중간고사: 과목 = { 점수: 99, 등급: 1, 과목명: '코딩'} [type]& 기호를 이용해서 확장성 있게 사용할 수 있다.(type 은 교차 타입을 통해 확장)type 시험 = { 점수: number, 등급: number}type 과목 = 시험 & { 과목명: string}const 중간고사: 과목 = { 점수: 99, 등급: 1, 과목명: '코딩'}  선언 병합(.. 2024. 11. 26.
K6 grafana 연동 ( k6 그라파나 연동 ) 부하테스트를 했으면, 부하테스트 중에 발생하는 metrics data 에 대해서도 monitoring 을 진행할 필요가 있다. 흔히 사용되는 툴이 grafana 이고, grafana는 시각화 전용 툴이기때문에 data 수집저장소인 influxdb와 함께 사용하면 된다. 자 우선!git clone https://github.com/grafana/k6 && cd k6 k6 용 grafana 를 clone 받아보자! 받아졌으면, docker compose 로 influxdb 와 grafana의 컨테이너를 띄우자!!(얼마나 간단한가?)docker-compose up -d influxdb grafana 위에 그림과 같이 띄워진것을 확인할 수 있을 것이다. 자 이제 grafana 의 dashboard 를 세팅해야.. 2024. 11. 25.
K6 부하테스트 어떻게 할까? 개발이 완료될 시점이 되면, 우리가 개발한 서버가 어느정도의 부하까지 견뎌내는지 테스트를 해봐야한다.(물론 부하테스트가 항상 필요한 건 아니다.) 부하테스트를 결정하기 전에 몇가지 고려사항이 있긴하나, 일단 사용자가 많이 접속할 것을 감안하여,부하테스트를 해야한다고 가정 시 여러 툴중에 오늘은 K6에 대해 다뤄 보겠다. 우선 K6 는 자바스크립트 기반에 스크립트 명령어를 미리 작성하여 간단한 실행으로 부하테스트를 진행할 수 있다. 설치 부터 해보자(brew 기반 설치 방식이다.)brew install k6 설치가 끝났으면 간단한 스크립트를 작성해보자(자바스크립트 코드이다.)import http from "k6/http";import { sleep } from "k6";export const options.. 2024. 11. 25.
nest js docker 배포 하기 (nestjs) FROM node:18RUN mkdir -p /var/app WORKDIR /var/app COPY . . RUN npm iRUN npm run build EXPOSE 3000 CMD [ "node", "dist/main.js" ] node version 의 경우 원하는것으로 바꿔주면 되고,좀 더 빠르게 빌드하고 싶으면  아래와 같이 alpine 버전으로 변경해주면 된다.FROM node:18-alpine 2024. 11. 24.
항해플러스 할인코드 받는 법 !! 할인코드 방출 !! 커리큘럼 정보!! 항해플러스 백엔드 7기 / 프론트엔드 4기 / Ai 2기 모집이 한창이다.  "할인코드도 공유" : HHPC0010(최신코드로 update, 백엔드 8기, 프론트엔드5기, AI 3기도 사용가능) "수강료 결제"할 시 위의 코드 입력하면 할인받을 수 있습니다.(프론트, 백엔드, AI 모두 가능)  [백엔드 과정 설명 - 가장 인기 많은 코스] 2024. 11. 23.
Nest js Test Container 구성!! feat. Mysql 최근 대세(?)로 부각한, 테스트 주도 개발을 하기위해서는,,테스트 코드 작성이 필수 이다. (단위테스트, 통합테스트, e2e 테스트 등) 다만, 여기서 테스트 수행 시 DB가 항상 접속이 되어있어야 할까?는 다소 의문스러운 영역이긴하다왜? 독립적인 구성에서의 테스트가 이루어 져야하기 때문이다.예를 들면, Kafka 를 도입해서 사용중인데, Kafka 가 항상 있어야만 테스트를 돌릴수 있는가?라는 상황이면, github action 내에서 push 시점에서 테스트코드를 돌리기가 힘들것이다.(물론, 배포 후 cypress 등을 이용한 e2e테스트는 다를 수 있다.) 결론적으로는 B/E 단에서 독립적인 테스트 환경이 보장되냐 안되냐가 중요한 것이다.(서론이 다소 길었다.) 자, 그럼 독립적인 환경보장을 하기.. 2024. 11. 23.
자동 주입을 할 수 없습니다. 정규화된 bean은 ‘xxxx’ 타입이어야 합니다. , 조회 빈이 두개일 때 문제점 !! 어떻게 해결할 것인가? feat Spring 오류 코드자동 주입을 할 수 없습니다. 정규화된 bean은 ‘xxxx’ 타입이어야 합니다. 보통 조회되는 빈이 2개일 때 발생하는 오류 코드이다.여러 방법이 있지만 아주 간단하게 @Primary annotation 만을 적용하여 쉽게 해결할 수 있다. @Primary // 이부분@Bean("bean name")fun project(): projectResult { return responseTemplete()} 간단하게 해결되는 것을 볼 수 있다! 2024. 11. 21.
@EnableConfigurationProperties을(를) 통해 등록되지 않았거나 Spring 구성 요소로 표시되었거나 @ConfigurationPropertiesScan을(를)통해 검사됨 [오류] 해결방법!! Java or Kotlin Spring 으로 초기 세팅개발을 하다보면(혹은, 개발중이라도)아래의 오류를 간혹 보곤한다.@EnableConfigurationProperties을(를) 통해 등록되지 않았거나 Spring 구성 요소로 표시되었거나 @ConfigurationPropertiesScan을(를)통해 검사됨 그게 고민할 필요없이@ConfigurationProperties 사용을 할때에는 아래의 annotation 만 추가해주자! @ConfigurationPropertiesScan 소스에서 적용한것을 보면~@ConfigurationPropertiesScan // 이부분@SpringBootApplicationclass MainApiApplicationfun main(args: Array) { runAp.. 2024. 11. 21.
아키텍처 및 시스템 설계 by CTO 개발을 할때 가장 처음 하는 일이 있다.- 기획 리뷰- 요구사항 분석- 그리고 시스템 아키텍처 설계 이다!!! 기획 리뷰, 요구사항 분석은 CTO가 아니더라도 대부분의 애자일한 조직에서 개발자가 수행해야할 일 들중 하나이다. 하지만, 시스템 아키는 다르다. 왜?아키를 처음 제대로 설계하지 않게 되면, 모든 개발자가 영향을 받게되고, 이 영향이 개발비용 증가로 이어질 수 있다.여기서 말하는 비용은 시간적 비용과 비용적 지출 모두를 뜻하는 말이다. "토이 호어"라는 사람이 한말 중 유명한 말이 있다.https://ko.wikipedia.org/wiki/%ED%86%A0%EB%8B%88_%ED%98%B8%EC%96%B4 토니 호어 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전.ko.wiki.. 2024. 11. 1.
728x90