일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- springboot
- Spring
- Git
- it
- Spring Boot
- IntelliJ
- jenkins
- ReactJS
- db
- Oracle
- Gradle
- Design Patterns
- java
- 요리
- JVM
- Web Server
- jsp
- php
- laravel
- ubuntu
- redis
- elasticsearch
- devops
- MySQL
- linux
- tool
- 맛집
- javascript
- Spring Batch
- AWS
- Today
- Total
아무거나
Spring Boot 에서 aws-java-sdk-dynamodb 를 활용한 AWS DynamoDB 연동 (+Credentials Setting 포함) 먼저 AWS Credentials 설정을 application.yml 기반으로 하게된다면 중요키들이 노출하게된다. 그래서 보통 KMS(=Key Management System)를 통한 관리, 키값 암호화 관리, 서버에 설정된 AWS CLI 를 통한 저장된 프로필 사용(Ex- ~/.aws/credentials) 등의 방법이 있으며 해당 내용에서는 서버에 설정된 AWS CLI 를 통한 저장된 프로필 사용 하는 방법으로 진행하도록 한다. aws-java-sdk-dynamodb 를 선택한 이유 (=spring-data-dynamodb 의 단점) 2020.03.0..

평소 대략적으로만 이해하고있던 배포전략 개념에 관하여 좀 더 자세하게 정리하고자 포스팅을 작성하게 되었다. 배포전략(Rolling, Blue/Green, Canary) Rolling Rolling 배포는 서버를 한 대씩 구 버전에서 새 버전으로 교체해가는 전략이다. 서비스 중인 서버 한 대를 제외시키고 그 자리에 새 버전의 서버를 추가한다. 이렇게 구 버전에서 새 버전으로 트래픽을 점진적으로 전환한다. 이와 같은 방식은 서버 수의 제약이 있을 경우 유용하나 배포 중 인스턴스의 수가 감소 되므로 서버 처리 용량을 미리 고려해야 한다. Blue/Green Blue/Green 배포는 신 버전을 배포하고 일제히 전환하여 모든 연결을 신 버전을 바라보게 하는 전략이다. 구 버전, 신 버전 서버를 동시에 나란히 ..
Gradle 다중 dependsOn 선언시 예측할 수 없는 종속성 순서에 대한 문제 발생 아래와 같이 빌드관련 스크립트를 만들었지만 dependsOn 의 동작이 제대로 이루어지지 않아 myDeleteTask 태스크가 실행된 상태로만 ide 상의 폴더 구조만 표시되고 애플리케이션 구동시에 갑자기 삭제된 폴더들이 생기는 기괴한 현상이 발생한다. (실제 CI/CD 구동시에 해당 폴더자체는 삭제된 상태임 즉, myDeleteTask 만 실행되어있는 상태로 되어있음) ... task frontendNpmInstall(type: NpmTask) { dependsOn myDeleteTask ... } // Client Build Task def buildType = "build:bigbro" task npmBuild..
spring boot 2.5 이상부터 생성된다고함 -plain 이 붙은 jar 파일은 plain archive 라고하며 애플리케이션 실행에 필요한 모든 의존성을 포함하지 않고, 작성된 소스코드의 클래스 파일과 리소스 파일만 포함 (즉, 모든 의존성이 존재하지 않기 때문에 java -jar 명령어로 실행시 오류가 발생) plain.jar 생성 방지를 위한 설정 추가 [build.gradle] ... jar { enabled = false }
@NotEmpty 등과 같은 Annotation 이 import 안될 때 NotEmpty 등과 같은 Annotation 은 javax.validation.constraints 패키지에 존재한다. 또한 스프링부트 2.3 이상부터 포함되지 않고 따로 의존성을 추가하여야한다. 의존성 추가는 하기 코드를 참고 [build.gradle] dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' }
homebrew 업데이트 및 java 설치 $ brew update $ brew tap adoptopenjdk/openjdk $ brew install adoptopenjdk11 --cask // 설치된 자바 버전과 경로를 확인 $ /usr/libexec/java_home -V // 환경변수 등록 (~/.bash_profile파일에 다음을 추가한다.) export JAVA_8_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home" export JAVA_11_HOME="/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home" alias java8='export JAVA..

결과값 리턴값이 String 인 경우 한글이 깨지는 현상 (설정 파일에서 인코딩을 지정해도 안될 경우) 원인은 HTTP 메소드 컨버터의 StringHttpMessageConverter 에서 기본 옵션 ISO-8859-1을 발견 해결방법 String 이 아닌 다른 값으로 가공 (굳이 String 이 아닌 Response Model 클래스를 따로 만들어서 리턴하였음) WebConfig 의 configureMessageConverters 오버라이딩하여 converter.setWriteAcceptCharset(false); 로 변경 @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void conf..
NPM install 시에 "error can't find python executable python you can set the python env variable mac" 오류 해결 (node-pre-gyp 설치시 기준) python 경로를 못찾거나 버전이슈일 가능성이 높다. 현재 진행한 환경은 Mac의 Python3 이며 Python2를 설치하여 환경변수를 변경하여 해결하였다. // homebrew를 통한 python 2.7.18 설치 $ brew install pyenv $ pyenv install 2.7.18 // 환경변수 등록 (위의 파이썬 설치후에 표시되는 경로를 하기 npm_config_python= 에 넣고 명령실행) $ export npm_config_python=Users/bkjeo..
Blocked mirror for repositories .. 에러가 표시되며 다운로드가 안되는경우 현재 폐쇠망에서 특정 모듈을 Nexus에 모아 사용하고 있는 상태이며 알아본 결과 Maven 3.8.1 버전부터 http에 대한 외부 연결을 막는 설정이 default로 변경되었다고함 해결방법은 해당 nexus를 https로 변경시켜주는 방법 또는 maven의 settings.xml에 http를 무력화 시켜주는 코드를 삽입하는 총 두 가지의 방법이 있으며 우선 settings.xml 을 활용하는 방법으로 진행하였다. [settings.xml] ... maven-default-http-blocker external:dont-match-anything-mate:* Pseudo repository to mirr..
JDBC란 자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스 JDBC 작동 순서 JDBC 드라이버 로드 jdbc.drivers 라는 시스템 환경변수에 등록된 내용으로 함 class.forName() 메서드를 이용해서 직접 해당 클래스를 로드하는 방법 (대부분 사용) 데이터베이스 연결 Java.sql.Connection 에 정보를 입력하여 연결 Statement 생성 데이터베이스 연결로부터 SQL문을 수행할 수 있도록 해주는 클래스 Statement: 데이터베이스 연결로부터 SQL문을 수행할 수 있도록 해주는 클래스 PreparedStatement: SQL문을 미리 만들어주고 변수를 따로 입력하는 방식 (효율성이나 유지보수 측면에서 유리) SQL문 전송 {St..