개발
-
kafka 설계개발/kafka 2024. 8. 20. 09:20
크게 pub 브로커 sub 으로 구성된다. pub 시점에 시리얼라이즈를 통해 key와 value를 보낸다. 이를 브로커가 적절한 양을 판단 후 sub(컨슈머) 그룹에 보내게 된다. (key 단위 ) sub의 경우 batch로 받을 지 single로 받을지 판단할 수 있다. pub 주요 config ProducerConfig.COMPRESSION_TYPE_CONFIG - 압축유형 ProducerConfig.LINGER_MS_CONFIG - pub 대기 시간 ProducerConfig.MAX_REQUEST_SIZE_CONFIG -pub max 용량 ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG - key 시리얼라이즈 ProducerConfig.VALUE_SERIALIZER_CL..
-
dynamodb write개발/AWS 2024. 8. 20. 08:45
dynamodb에서 write의 경우 로우별 write와 데이터를 묶어서 write를 할 수 있는 기능이 있다.그 중 데이터를 묶어서 write를 하는 경우를 보려고 한다. 모든 api가 그렇듯 네트워크 비용이 증가하면 그만큼 지연이 발생한다 대량건을 빠른 시간 내에 처리를 해야하는 구조라면 로우별 write 보단 bulk 별 write를 고려할 수 있다. nosql인 dynamodb의 경우 key value 형태로 데이터가 저장되므로 aws model인 AttributeValue로 데이터를 변환하는 과정을 거쳐야 한다 AttributeValue 에는 다양한 형태가 있다 1. withS - 말 그대로 String 형태로 변환하는거로 tmp : "123" 같은 형태로 들어간다. 2. withL - Lis..
-
Exception 분리개발/java 2024. 8. 19. 16:43
고객사이드오류가 발생할 경우 Exception을 처리를 보통 하는데 이 경우 고객에게 500에러를 보여줄 수는 없다 1.HttpStatusCode를 변경하고 errorMessage에 고객 사이드에서 발생 시킬 오류를 전달한다 시스템사이드 시스템 내부에서는 빠른 에러 감지를 위해 어떤 에러가 발생했는지 파악을 쉽게 해야한다 그러기 위해 Exception을 분리를 하는게 좋다 예를 들어 APIException , SystemException , MessageException 과 같은 방식이다 그 후 각 서비스 별로 Exception을 호출 하며 ExceptionHandler를 통해 Exception 별 log를 출력한다
-
RESTAPI 이력감지개발/java 2024. 8. 19. 16:33
상황하나의 서비스 내에 여러 api가 호출이 되고 있다. 조건서비스의 공통 키를 기준으로 api 이력을 조회가 가능하게 파이프를 묶는다 방법 1.RequestBodyAdviceAdapter를 통해 Controller의 parameter를 읽어 공통 키를 ThreadLocal에 등록한다 2.RestTemplete을 config에 추가하고 interceptor를 처리할 class를 등록한다. 3.interceptor의 경우 httpStatusCode를 통해 동작을 하는게 일반적인데 공통의 Model이 있다면 변경하여 사용한다. 4.필요한 사항들을 HttpRequest request을 통해 받아서 DB 적재 한다 5.작업이 완료가 되면 ThreadLocal을 clear한다 cf) spring의 경우 ..
-
axios Cross Origin개발/vue 2022. 3. 27. 21:38
안녕하세요 저는 프론트단으로는 vue를 사용하고 있으며 백단으로 spring을 사용하고 있습니다. 그러하여 둘은 다른 포트를 사용하므로 통신에 있어서 크로스 오리진 설정이 필요합니다. 설정을 하지 않을 경우 아래 이미지와 같이 오류가 발생하여 제대로 된 통신이 이루어지지 않습니다. 저는 우선 통신을 위해 vue에서 axios를 통해 비동신 통신을 사용합니다. 1.vue axios 설치 npm install axios 2.main.js 내 axios 크로스 오리진 허용 설정 import axios from 'axios' axios.defaults.baseURL='http://localhost:8080'; axios.defaults.headers.post['Content-Type'] = 'applicatio..
-
springboot JPA개발/spring 2022. 3. 26. 19:35
안녕하세요 오늘은 springboot 내 JPA 연동후 정상 조회 확인까지 확인하는 시간을 가져볼까 합니다. https://start.spring.io/ 를 통해 아무이름을 가진 프로젝트를 하나 생성해줍니다. mysql을 설치가 되신분들은 1.프로젝트 내 application.yml 파일 내 아래와 같이 기입합니다. cf) 저는 보기 편함을 위해 properties파일을 yml 파일로 변환하였습니다. spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/데이터베이스명?serverTimezone=UTC&characterEncoding=UTF-8 username: 유저아이디 password..
-
bootstrap vue 적용 -UI개발/vue 2022. 3. 22. 02:07
개인 프로젝트를 실행할때 css 때문에 디자인을 못해서 포기하는 경우가 많습니다. 그런 디자인을 위한 여러 플러그인을 소개하고 그 중 bootstrap에 대해 간단한 적용하는 예제를 만들려고 합니다. 우선 앞서 vue3으로 프로젝트를 만드시려는 분들은 아직 타 플러그인들이 지원을 하지 않아 저는 bootstrap으로 진행을 했습니다. 플러그인의 종류에는 크게 3가지가 있습니다. 1등 vuetify (https://vuetifyjs.com/en/) 2등 bootstrap-vue (https://cdmoro.github.io/bootstrap-vue-3/getting-started/#one-time-donations) 3등 Quasar (https://quasar.dev/) 지속적인 개발과 star의 양으로..
-
vue 기초개발/vue 2022. 3. 13. 17:37
vue의 경우 node를 사용하지 않아도 cdn을 통해 사용할수 있습니다. 하지만 좀 더 전문적인 프로그램을 사용하기 위해서는 node를 설치하여 사용하는것이 일반적입니다. 저는 맥 환경내 brew를 통해 node 및 npm을 설치하였습니다. 1.node 설치 brew install node 2.npm 설치 brew install npm 1과 2번의 과정을 통해 사용자의 컴퓨터에 node와 npm이 설치되었습니다. 간단히 node는 서버이고 npm의 경우 node내 플러그인을 관리해주는 도구입니다. 3.npm install vue npm을 통해 vue 플러그인을 설치해줍니다. 4.vue create 프로젝트 명 별도 파일을 생성하지 않았다면 파일이 생성되며 vue 구동에 필요한 여러 프로그램이 설치됩니다..