분류 전체보기

· AWS
ECR 생성하기 (M1 Mac 적용) - exec /usr/bin/java: exec format error 에러 해결 저번 포스팅에서 ECR을 세팅하고 따로 ECS까지 생성해서 배포 테스트를 진행했는데 계속 같은 에러를 내면서 실패했다. 그 에러를 해결하는 험난한 과정을 작성해 보겠다,,, 1. 원인 코드 일단 ECS에서 배포를 하면 아래와 같은 에러 메시지가 출력되면서 배포에 실패한다. exec /usr/bin/java: exec format error 계속 검색하고 알아본 결과, 원인은 운영 체제의 차이에서 오는 문제였다. 지금 로컬에 ECR에 빌드한 노트북이 M1 시리즈의 맥북이었는데 ECS에서 설정한 EC2의 아키텍처는 x86이다. Mac M1에서 빌드한 Docker image는 ARM 아키텍처..
· AWS
ECR 생성하기 (M1 Mac 제외) 내가 진행하고 싶은 프로젝트의 CI/CD는 AWS CodePipeline을 통해 프로젝트 배포를 trigger 하고, Amazon ECR에 도커 이미지를 push 하고, Amazon ECS에서 이미지를 pull 받아 태스크를 실행하는 프로세스를 구상하고 있다. 일단 이 프로젝트에 필요한 ECR을 생성해 보자 1. ECR 생성 1-1. ECR 생성 화면으로 이동한 후, 리포지토리 생성 [시작하기] 버튼을 클릭한다. (ECR 생성 페이지로 이동) 1-2. 리포지토리 생성 화면에서 아래와 같이 입력한다. 그리고 [리포지토리 생성] 버튼 클릭하면 생성이 완료된다. 1-3. 생성 완료된 모습 2. ECR에 로컬에서 만든 Dockerfile로 이미지 push 하기 2-1. 생성..
· Docker
멀티-플랫폼 이미지 빌드 명령어 (여러 운영체제 호환 가능한 도커 이미지 빌드)  AWS ECS와 ECR을 연계해 CI/CD를 적용하는 구성을 시도하다가 Docker image를 빌드한 환경과 이 이미지를 실행할 환경의 운영체제가 다르면 도커 이미지가 제대로 실행되지 않는 에러를 만났다. 그래서 멀티-플랫폼 이미지를 빌드할 수 있는 명령어를 새롭게 찾아봤다. 원인일단 도커 이미지가 제대로 실행되지 않는 에러는 도커 컨테이너에 접속하면서 에러를 냈었다.exec /usr/bin/java: exec format error위 에러가 도커 컨테이너에 접속하는 명령언데 exec부터 format error를 던지니 지금 뭔가 도커 이미지에 문제가 있던 거였다.찾아보니 도커 이미지를 빌드할 때와 배포할 때의 운영체제 ..
native query에서 @rank := 0, @rownum 처럼 사용자 정의 변수 사용할때 에러 발생 Spring data JPA에서 native query를 사용할 때 @rank 함수를 적용해서 SQL문을 작성하려고 할 때 실행이 안되고 에러가 터졌다. 원인 코드 @rank := IF(@current_category = category_sn, @rank + 1, 1) AS rank 에러 원인 @rank := 0는 MySQL에서 사용되는 사용자 정의 변수(user-defined variable)다. 이것은 SQL 쿼리 내에서 값을 임시로 저장하고 참조할 수 있는 변수를 선언하게 해주는데 Hibernate나 JPA에서는 이와 같은 문법을 지원하지 않기 때문에, 쿼리를 실행할 때 위와 같은 에러가 발생한..
JPA(native query)에서 MariaDB WITH RECURSIVE 작동 안되는 오류 게시글 상세조회에서 댓글의 대댓글까지 가져오는 쿼리를 JPA로 작성해야 했다. 일단 DB console에서 쿼리를 작성하고 정상 작동되는 걸 확인하고, native query로 옮겨와서 실행시켰는데 아예 실행조차 안되고 Bean 등록조차 안 되는 에러가 발생했다. 원인 코드 아래는 WITH RECURSIVE 사용한 일반 SQL 쿼리문 WITH RECURSIVE COMMENT_LEVEL AS ( SELECT paper_comment_sn, comments, class, odr, parent_sn, reg_id, reg_dt, concat(convert(paper_comment_sn, char), '-', '0')..
JPQL에서 limit 1 작성했을때 실행 안되는 오류 JPA를 사용하면서 repository에서 named query로 limit 1을 사용했을 때 아예 프로젝트 실행조차 안 되는 오류가 났다. 원인 코드 가장 최근에 등록된 회원을 가져오고 싶어서 limit 1을 작성했다. @Query("SELECT u from User u where u.userSn = :userSn order by u.regDt desc limit 1") 이때 아래와 같은 오류 메세지를 출력하면서 프로젝트 실행이 안 됐다. Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ..
· Tools
Slack과 GitHub 연동 Slack과 GitHub repository를 연동해 보자. 일단 내가 구축하고 싶은 프로젝트가 MSA 방식이라 각각의 repository에 해당하는 채널을 만들고 그 채널에 알림을 띄우는 방식으로 진행했다. 1. Slack에 GitHub 앱 설치 2. GitHub 설치 완료된 모습 설치가 완료되면 앱 > GitHub > 채팅창 영역에 GitHub가 성공적으로 설치되었다는 메시지가 온다. 'Connect GitHub account' 버튼 클릭을 클릭한다. 위 인증번호를 복사해서 'Enter code' 버튼을 누르고 인증번호 붙여넣기 한다. 그럼, 아래와 같이 Slack과 GitHub 계정 연동이 성공된 메세지를 받을 수 있다. 3. 알림 받을 채널 만들고 GitHub 연동 ..
Custom Annotation 만들기 - AOP(Aspect-Oriented Programming) 이전에 작성했던 포스트에 이어서 커스텀 어노테이션을 만드는 방법 중에서 AOP를 이용해서 커스텀 어노테이션을 만들어보자. 1. AOP를 이용한 방법 Spring AOP를 사용해서 어노테이션을 처리하는 로직을 분리한다. 이 방법은 비즈니스 로직과 어노테이션 처리 로직을 분리하여 유지보수가 쉽고, 코드가 깔끔해진다. 특히 Spring 프레임워크에서 많이 사용되며, @Transactional, @Cacheable 등이 이러한 방식으로 구현되어 있다. @Aspect public class MyCustomAspect { @Around("@annotation(MyCustomAnnotation)") public Ob..
평양냉면7
'분류 전체보기' 카테고리의 글 목록 (26 Page)