이전에 docker를 이용하여 컨테이너를 생성하여 보았다. 이후 관련 서비스를 추가하면서 컨테이너의 수가 증가하여 개발환경의 PC를 재부팅 시 기동 해야 하는 컨테이너의 개수 또한 증가하였고 반복적인 일이기 때문에 보다 간편하게 관리가 필요했다. 이를 해결하기 위해 docker-compose를 적용해 보았다. 현재 환경에서 docker-compose 설치여부 확인 docker-compose version 위 버전확인 명령어를 입력하여 docker-compose 설치여부를 확인하는데 설치가 되어있다면 아래와 같이 버전정보 확인이 가능하다. docker-compose version 1.17.1, build unknown docker-py version: 2.5.1 CPython version: 2.7.17 ..
Optional이란 java 8버전 이후 부터 java.util 패키지 내 Optional이라는 class를 제공한다. 용도는 java 비지니스 로직을 구현하며 많이 발생하는 NPE(NullPointException)을 방지하기 위함이다. Optional 사용 시 발생하는 문제점 Optional get 종류에 따른 결과확인을 위한 소스코드 public static void main(String[] args) { System.out.println("case1 - Optional.get() 수행"); Optional case1 = Optional.of("case1 data"); System.out.println("case1 " + case1.get()); System.out.println("=========..
작업내용 매일 한정된 수의 사용자를 접속시점 무작위로 당첨시켜 사용자 정보를 적재 및 즉석으로 확인 가능한 기능 현재 상황 작업환경 2대 이상의 다중 서버 환경 messageQueue 용도 서버 도입 불가 oracle DB RAC 환경 최초로직 쿠폰을 지급하기 전 현재까지 당첨된 사용자의 수를 조회하여 한정된 수치에 도달하지 않은 경우 당첨자 정보를 DB에 적재하는 방법 최초로직 문제점 예를들어 100개 한정된 수량의 쿠폰을 지급 시 다중서버 및 동시응모에 의한 100명을 초과하는 당첨자가 발생하는 경우를 확인 (이때 테스트는 junit을 통하여 멀티스레드 환경으로 진행) 최초로직 원인 A트랜잭션과 B트랜잭션이 거의 동시에 진행된 경우 A트랜잭션 조회 시점에 당첨자 수 99명 당첨자 적재 100명 커밋 ..
IDE로 Eclipse를 사용하여 작업하는 환경에서 기존에 생성되어있는 java 파일을 작업하던 중 수정 후 저장을 시도하는 순간아래와 같은 메시지창이 표출되었다. Eclipse Save could not be completed. Try File > Save As... if the problem persists. Reason: Some characters cannot be mapped using "EUC-KR" character encoding. Either change the encoding or remove the characters which are not supported by the "EUC-KR" character encoding. 해당 메시지에서 안내해주는 원인은 EUC-KR 인코딩이 지원되..
vscode 환경에서 JAVA, SpringBoot, Gradle의 개발환경에서 최초 작업하였던 PC가 아닌 다른 PC에서 소스를 내려받은 후 작업을 진행하기 위해 프로젝트 실행을 하던 중 아래와 같은 오류메시지가 발생하였다. PS 프로젝트경로위치> .\gradlew.bat bootrun Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details > Configure project : zone: null > Task :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for t..
최근 MSA기반으로 진행 중인 개인 프로젝트를 작업하다 보니 서비스별로 프로젝트를 분리하고 연관된 데몬을 Docker 컨테이너로 관리하는데 시작이 반이라고 작업전 컨테이너를 실행 전 개발 작업을 시작하기까지 시간이 다소 소요되니 작업을 하고자 행동에 옮기는 횟수가 줄어들어 버렸다. 현재 보유하고 있는 docker image와 container는 아래와 같다. 개인프로젝트로 테스트용도로 생성된 이미지도 많지만 현재 하나의 프로젝트를 개발 및 테스트하기 위해서는 최소 3개 이상의 컨테이너를 실행해야한다. 컨테이너를 실행하기 위해서는 아래와 같은 명령어를 입력한다. docker start redis docker start mongodb-container docker start mysql-container do..
캐시 시스템을 사용하는 이유 DB, API 등의 호출이 빈번한 경우 서버에 많은 요청으로 인한 부하를 방지하기 위함이다. 캐시 시스템하면 가장 대표적이고 많이 비교하는 캐시 시스템인 Memcached와 Redis에 대하여 확인해 보았습니다. Memcached 특징 멀티스레드 지원 스케일업 시 성능 향상 가능 LRU 알고리즘만 채택 Master/Master 리플리케이션 지원 Consistent Hashing을 통한 데이터 분산 지원 Redis 특징 싱글스레드 지원 다양한 데이터 구조 지원 스냅샷 복제 트랜잭션 Pub(발행) Sub(구독) 메시지 패턴 지원 루아 스크립트 지원 위치기반 데이터 타입 지원 다양한 data eviction 전략 지원 Memcached를 채택하는 경우 캐싱하고자 하는 데이터가 단순..
발단 윈도우즈 환경에서 VScode IDE를 사용하여 SpringBoot + Gradle 작업을 하던 중 프로젝트 실행 시 profile 별로 동작을 구분하기 위해 yml 파일에 profile을 분리 후 해당 profile로 Run을 하는데 아래와 같은 오류가 발생하였다. PS 프로젝트경로> .\gradlew.bat -Dspring.profiles.active=test bootRun > Configure project : profiles 확인 : null FAILURE: Build failed with an exception. * What went wrong: Task '.profiles.active=test' not found in root project '프로젝트 상위 폴더'. * Try: > Run..
- Total
- Today
- Yesterday
- jQuery
- WAS
- vscode
- Git
- SQL
- web
- SpringBoot
- docker
- Java
- Oracle
- Eclipse
- 컨테이너
- spring
- parse
- React
- 이벤트발생
- mybatis
- IMAGE
- jaxen
- Linux
- JPA
- 깨짐
- TLS
- SSL
- 날짜
- gradle
- Windows
- btye
- html
- JSON
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |