일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메세지큐
- 머신러닝
- SpringBoot
- OpenShift
- 생성형 AI
- POD
- vue.js
- fast api
- jpa
- LLaMa
- 생성형
- 도커
- kubernetes
- Redis
- GPT
- 오픈시프트
- Python
- k8s
- LeetCode
- fastapi
- Machine Learning
- 솔루션조사
- 로깅
- 리트코드
- 컨설팅
- vuejs
- BFS
- 쿠버네티스
- Docker
- 컨설턴트
- Today
- Total
목록전체 글 (77)
수 많은 우문은 현답을 만든다
이제 예외처리에 자신감이 생겼으니 애플리케이션에서 발생하는 예외들을 수집하는 '로깅 시스템'을 설계해보자. 로깅 시스템 설계 1. 예외 Coverage 100% 만들기 보통 애플리케이션에서 예외를 잡기 위해서 try-catch 를 사용한다. 이보다 중복 코드를 줄이고 가독성을 높히는 방법은 @ExceptionHandler 를 사용하는 방법이 있다. 이렇게 비즈니스 로직에서 발생할 수 있는 예외들은 개발자가 직접 잡아내면 되지만 예상하지 못한 예외들은 어떻게 해야할까? 이때는 @ControllerAdvice를 사용하면 애플리케이션 전역에서 발생하는 예외들을 처리할 수 있어서 예상하지 못한 예외까지 잡아낼 수 있다. 2. 로그 수집 방법 정하기 그러면 로그는 어떻게 수집할 수 있을까? 우선 우리는 보통 로그..
예외처리에 대한 고찰 안녕하세요 조영호입니다. 오늘은 어플리케이션의 예외처리에 대해 고민하고 발견한 내용들에 대해서 공유하고자 합니다. 막연한 시작에서 한 걸음 나아간 결과를 얻게되어 뿌듯합니다.. 부족한 점은 댓글 달아주세요! 어느날 새로운 프로젝트 팀으로 이동하게 되었습니다. 첫 미션은 해당 어플리케이션의 에러들을 '잘 관리할 수 있게 해봐라' 였습니다. 에러 모니터링이야 그냥 ELK/EFK 쓰면 간단할 것으로 생각했지만, 어플리케이션 단에서 저장해서 보여주고 싶다는 요건이었습니다. (찾다보니 front-end browser log를 저장하는 솔루션도 있더라구요 ! - Sentry) 해당 애플리케이션은 이미 메소드 별로 try-catch를 덕지덕지 쓴 상태였습니다. 어떻게하면 가독성을 향상시킬 수 있..
안녕하세요 조영호입니다. 제가 개발에 참여한 한 프로젝트에서 아래와 같이 PoolingHttpClientConnectionManager를 설정할 일이 있었습니다. PoolingHttpClientConnectionManager clientConnectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); clientConnectionManager.setMaxTotal(1500); clientConnectionManager.setDefaultMaxPerRoute(1000); 기본 라우트 수를 1000개, max를 1500개로 지정해놓고 쓰고 있었는데요. 어느날 하나의 2000개 리스트를 가진 하나의 요청을 프로그램에 보냈습니다...
JPA란 JPA(Java Persistence API)는 Java ORM 기술에 대한 API 표준 명세이다. 이에 대한 구현체로는 Hibernate, EclipseLink, DataNucleus가 있으며 Spring Framework는 기본적으로 Hibernate를 사용한다. ORM 이란 여기서 ORM은 Object Relational Mapping (객체-관계 매핑)로 OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relational DataBase)에서 쓰이는 테이블을 자동으로 매핑(연결)하는 것을 의미한다. 클래스와 테이블은 애초에 서로 호환가능성을 염두해두고 만들어진 것이 아니기 때문에 불일치가 발생하는데 이를 ORM이 해결한다. 즉 ..
안녕하세요, 조영호 입니다. 간단한 쇼핑몰을 제작해보면서 기초를 다지고 스스로 놓쳤던 부분들을 챙길 수 있을 것이라는 기대로 글을 시작합니다. 이번 프로젝트에서는 다양한 기술들을 다뤄볼 예정입니다. Springboot, JPA, Mysql, Swagger, Spring Security, JWT Token, Redis, Spring Batch, Rabbit MQ, Docker, Exception Handler, React.js or Vue.js 등의 내용을 다루면서 쇼핑몰을 제작하도록 하겠습니다. 오늘은 IntelliJ IDE를 사용해 간단한 Springboot Web Application을 제작해보겠습니다. ORM은 JPA를 사용할 계획이고 API 문서화는 Swagger를 사용해보겠습니다. 1. 인텔리제..
안녕하세요, 오늘은 Springboot Application에 Spring Batch를 적용하면서 고민했던 내용을 공유하려고 합니다. 현재 DDD(Domain Driven Design) 방식을 채택하여 개발을 진행하고 있으며 Bounded Context(도메인 경계)를 5가지로 구분했습니다. organization, settings, attendance, approval, batch 5가지 개별 모듈로 서비스가 구성되어있으며 각각의 필요에 의해 서로 의존성을 가지도록 설정했습니다. 오늘은 batch 모듈을 구성한 방식에 대해 간략히 설명하고 배치서비스 구성을 어떻게 구현했는지 설명하도록 하겠습니다. 1. Batch 모듈의 의존성 설정 우선 프로젝트의 build.gradle > dependencies에 모..
Docker, Inc. 는 공식적으로 Windows Server를 프로덕션 용으로 지원하고 있습니다. - 내용: Docker Engine is the industry’s de facto container runtime that runs on various Linux and Windows Server operating systems. - 링크: https://www.docker.com/products/container-runtime - 포럼: https://forums.docker.com/t/does-docker-ce-support-windows-container/39305 기본적으로 Docker는 CE/EE로 구분되며 CE는 개발용 (not for production), Docker EE는 프로덕션 용으..
안녕하세요 조영호입니다 :) 오늘은 Docker engine을 windows 운영체제에 설치해본 경험을 포스팅하고자 합니다. 기본적으로 Docker는 CE/EE로 구분되며 CE는 개발용 (not for production), Docker EE는 프로덕션 용으로 사용됩니다. 참고로, Windows Server 2016/2019에는 라이센스가 무료로 포함되어 있습니다. Docker, Inc. 는 공식적으로 Windows Server를 프로덕션 용으로 지원하고 있습니다. 다음은 공식홈페이지에서 발췌한 내용입니다. "Docker Engine is the industry’s de facto container runtime that runs on various Linux and Windows Server os." ..
안녕하세요 조영호입니다. 오늘은 Container 환경에서 개발한 웹 어플리케이션에 보안 설정하는 방법에 대해 포스팅하겠습니다. 웹 서비스는 front container(vue + nginx)와 server container(springboot)로 구성되어 있습니다. 1. 주요 디렉토리, 파일 권한 설정 미흡 [내용] 컨테이너 환경에서는 기본적으로 최소한의 권한 설정이 필요합니다. 필자는 처음엔 단순하게 NGINX에서 웹서비스를 띄우도록 서비스를 구성했지만, NGINX 설정 폴더/파일에 권한 설정이 미흡하여 다른 사용자(Other)로 부터 열람이 가능하다는 것을 파악했습니다. [ 확인사항 ] 대상 : docker image: web-front # ls -al /etc/nginx | grep conf.d ..
안녕하세요, 조영호입니다. 오늘은 이전에 살펴온 오픈시프트 컨테이너 플랫폼에서 Pod, Node 운영이 아닌 실제로 어떻게 애플리케이션을 이 컨테이너 오케스트레이션 플랫폼에 올리고 운영할 수 있는지 살펴보겠습니다. 간단하게 애플리케이션을 만드는 4가지 방법을 살펴본 후에 Nodejs와 Mysql을 각각 다른 파드로 구성하고 서로 통신하는 것 까지 해보도록 하겠습니다. 기존의 Monolithic 구조의 애플리케이션들은 하나의 서버에 여러 서비스(예를들어 Nodejs, Mysql 혹은 Spring, Apache, Tomcat 등)가 같이 공존했습니다. 요즘 화두가 되고있는 MSA (Micro Service Architecture) 개념은 이런 Monolithic 구조의 서비스를 작고 자원 효율적인 모듈로 따..