전체 글

생각을 정리중입니다....
· 개발
Java 1.5에 java.util.concurrent패키지 도입하면서 비동기 작업을 편하게 작업 할 수 있겠다. ExecutorService ThreadPool을 이용하여 비동기 작업들의 관리 할 수 있는 클래스 Java 1.5 스펙 submit 메서드를 수행하여 비동기 작업을 조회하거나 제어 할수 있는 Future 클래스를 반환 ThreadPoolExecutor 와 Executors의 팩토리메서드를 통해서 초기화 가능 submit 비동기 작업들을 수행하는 메서드 ( Callable, Runnable )을 파라미터로 받아 수행한다. * Callable ( 반환 타입이 있는 함수형 인터페이스 Future의 반환 타입이된다.) * Runnable ( 반환 타입이 없는 함수형인터페이스 ) ExecutorSe..
· 개발
동기와 비동기는 2가지 이상의 작업을 할때 수행하는것이라는 아이디어를 기억해야한다. 동기 (Synchronous) 어원의 근원 Sync (동시에 일어나다, 수행시기를 맞추는것) chrono (시간) 동시에 일어나는 사건(작업)들의 시간을 맞추는 것을 의미 한다. 예시) A와 B라는 작업을 같은 시간에 작동하도록 맞춘다. A의 B라는 작업이 끝나면 다음 작업이 시작되도록 맞춘다. 밥을 먹고 난 후 커피를 마신다. 밥과 커피를 동시에 마신다. 비동기 (Asynchronous) 동시에 일어나는 작업들의 시간을 맞추지 않는것 예시 ) A의 작업과는 별개로 B를 단독적으로 수행한다. 밥을 먹는중에 커피도 같이 마신다. 참고 링크 : https://www.youtube.com/watch?v=HKlUvCv9hvA&t..
· 개발
제 3자에 대한 처리를 어떻게 할 것인가에 대한 관점이라고 생각이 된다. 내가 수행중인 작업중에 B의 작업을 수행할때 B의 작업을 기다릴꺼냐? 안기다릴꺼냐의 관점이다. B의 작업을 기다린다면 블록킹 안기다린다면 논 블록킹 블록킹 밥 먹기라는 작업을 끝날때 까지 기달렸다가 커피를 마신다. 논 블록 킹 밥먹기 라는 작업을 안기다리고 커피를 마신다
TestFixture란? 테스트 코드에서 공유되는 초기 상태나 리소스를 설정하는 데 사용되는 개념 테스트 코드를 작성할 때마다 반복적으로 실행되는 코드를 줄이고, 테스트 코드의 가독성을 높이기 위해 사용 첨언 특정 상태를 고정해놓고 편의상 TestFixture 메서드를 선언하고 활용한다. 개인적인 의견으로 한글 메서드를 쓰면 가독성이 좋을 것으로 판단. TestFixture 예시 public static Car 가격이_100000인_테슬라() { return Car.builder() .name("Tesla") .price(100000) .build(); } 사용 @Test @DisplayName("가격이_100000인_테슬라 주문 생성") void createOrder() { // given Car ca..
다시 돌아온 인프콘 2023년 신청 첫날부터 신청했지만... 응 탈락이야~ 마지막 기회라고 생각하고 이벤트도 참여했었다. 응 없어~ 🤣 진심은 통한것인가 어찌어찌해서 흔쾌히 양도하시는 분을 만나.... 가게 되었습니다. 만만의 준비를 하고 (참여자중) 2등으로 도착 전날의 미리 몰래 가서 기웃기웃 거리다가 영한님과 토비님을 훔쳐본 건 비밀 와 드디어 입장~ 작년에는 오후에만 진행하던 일정이 올해는 무려 하루종일 진행해서 기대가 많이 되었죠 작년 참여 경험상 시간이 지날수록 기업 부스들이 사람들이 가득가득하여 제대로 못 방문한 경험이 있었기에 2등으로 온 특전으로 빠르게 부스를 오프닝 전에 다 돌고 관심 있는 기업에 데브챗을 신청했죠. ( 선택적 J 기질 발동 ) 반갑습니다! 이형주 대표님! 인프콘 열어주..
· 짤막팁
사내 ElasticCache Redis 엔진 버전을 업데이트를 위해 체크했던 포인트와 과정을 설명하고자 합니다. 다른 분들도 도움이 되었으면 좋겠습니다. 결론 부터 말하자면 ElasticCache 엔진 업데이트 시 서비스의 다운타임 및 데이터 유실은 발생하지 않으며 ElasticCache 파라미터 그룹을 체크하면 되겠습니다. 1. 라이브러리 의존도 체크 기본 적으로 사용하는 프로젝트내의 Redis 7 버전에 대한 지원과 의존도를 체크해봅니다. 저희 프로젝트는 아래 4가지의 라이브러리의 Redis의존도가 있었으며 이는 Document나 관련 로직을 수정하면 되겠습니다. Spring data redis Jedis Redis-session-manager Spring data Redis Session 2. 파라..
· 개발
지난 포스팅(https://benggrae.tistory.com/20)에서 Spring에서 API버전을 분기하는 방법에 대해서 작성하였다. 개인적인 생각에 Spring API Gateway를 이용하여 별도의 서비스(서버) 별로 쓰거나 새로운 버전이 통째로 런칭되어 하나의 서비스로도 떨어져 나갔을 때 유용한 방법이라고 생각이 되며 손쉽게 분기가 가능했다. YML에서 라우팅룰을 정의할 수 있다. application.yml 작성한다.spring: cloud: gateway: routes: URI에 버전을 포함시키는 방법 GET /v1yaml 파일 routes: - id: v1-api-path uri: http://localhost:8081 predicates: - Path=/v1/** filters: - R..
· 개발
사내에서는 URI에 경로를 포함하는 방법으로 개발이 되어있었는데 팀원분과 REST API 버전 관련하여 말하다 보니REST API 특성상 URI에는 자원을 표기하는 것이지 버전을 표기한다는 점에서 어색함이 들어서 시작이 되어 정리가 필요해 보여서 정리를 하고자 한다. REST API 버전을 표기하는 방법으로는 대표적으로 4가지가 있다.1. URI 경로에 표기하는 방법 GET /api/v1/call@RestController @RequestMapping("/api") @RequiredArgsConstructor public class HelloController { private final NewVersionService newVersionService; private final OldVersionServ..
· 개발/React
개발 환경에 따라 API 엔드포인트들이 변화될 수 도 있어 이에 따라 환경분리가 필요하다. .env 파일 Next.js는 .env 파일을 가지고 분리를 한다. NEXT_PUBLIC_XX이라는 Prefix를 가지면 클라이언트 쪽에 환경이 공유된다. *.env.development : next dev의 기본값 *.env.local : 우선순위가 가장 낮은 환경설정 .env.production : next build의 기본값 예시 ) API 주소를 분리 # .env.local NEXT_PUBLIC_API_BASE_URL=http://localhost:8080/api # .env.development NEXT_PUBLIC_API_BASE_URL=http://192.168.0.1:8080/api # .env.pr..
· 개발/React
개요 useState의 대체 함수입니다. (state, action) => newState의 형태로 reducer를 받고 dispatch 메서드와 짝의 형태로 현재 state를 반환합니다. (Redux에 익숙하다면 이것이 어떻게 동작하는지 여러분은 이미 알고 있을 것입니다.) 왜? 기존의 상태관리를 useState를 활용하여 작성하였다 set... 이런 느낌의 함수는 뭔가 괴리감이 느낀다고 개인적으로 생각된다 맹목적으로 값을 셋팅하는 느낌 나중에 복잡성을 해결하기 위해선 useReducer의 도움이 필요할꺼 같다. 또한, 성능 최적화에도 도움이 된다 예시 const initialState = {count: 0}; function reducer(state, action) { switch (action.ty..
연말부터 2023년 초까지 다소 바쁜 날들이 반복되어 2022년에 대한 회고가 많이 늦어졌다. 사실 회고라는 글을 처음 써보기도 함. 나이 30으로 시작된 2022년 벌써 서른이라니.. 나도 많이 나이가 먹었구나. 2022년 계획. 혼자 생각할 시간을 가져야지 하면서 남산에서 계획을 세웠었다. 목표는 아래와 같이 정의하였었는데 사실 보잘것이 없어 보이긴 해 보인다. 기술적으로 부족한 부분과 건강을 중심으로 잡았었던 것 같다. 2022년 목표 JPA 정리 -> 정리는 아니어도 체득은 한 것 같다. 오픈소스 컨트리뷰션 해보기 -> 어떻게 하는 걸까? AWS 아키텍처와 파게이트 서비스 사용해 보기 -> 사용했다. 인프런 강의 밀린 거 보면서 정리하기 -> 밀린 게 너무 많아~ 건강을 위해 운동 주 3회 -> ..
· 개발
생존형 AWS 프리티어 EC2 유저로 살아온 인생... EC2 프리티어 메모리는 1GB이다. 젠킨스를 도커에 올리는 순간 메모리가 700mb 정도 차서 웹서비스를 구동할 수 없는 상황에 처하여 스왑처리에 대해서 고민하게 되었다. swap 메모리란? > 실제 메모리 Ram이 가득 찼지만 더 많은 메모리가 필요할 때 디스크 공간을 이용하여 부족한 메모리를 대체할 수 있는 공간이라고 하겠다. amazon Linux (센트 OS기반) 설정 1. 스왑 파일 생성 bb는 볼륨 사이즈 count는 볼륨 카운트 sudo dd if=/dev/zero of=/swapfile bs=128M count=16 2. 스왑 파일에 대한 읽기 및 쓰기 권한을 업데이트 sudo chmod 600 /swapfile 3. Linux 스왑..
beng9re
생각하고 분석하고