본문 바로가기

분류 전체보기

(104)
[Spring Cloud] Feign에서 Hystrix 편하게 사용해보기 Hystrix는? Spring Cloud Hystrix는 일종의 누전차단기(Circuit Breaker) 역할을 하는 오픈소스입니다. 일정 기준 이상의 비정상적인 응답에 대해 미리 구성해둔 Fallback 로직을 수행하는 등의 작업을 해주며 치명적인 오류를 방지하는 역할입니다. Feign이란? 기존의 글로 대체하겠습니다. ㅎㅎ https://marrrang.tistory.com/81 [Spring Cloud] Feign에 대해서 Feign이란 MSA환경에서는 각 서비스 간의 호출이 기존의 단일 시스템일 때보다 증가하게 됩니다. 이러한 상환에서 Feign은 API 간의 호출을 편하게 해 주기 위해서 만들어졌습니다. 기존에는 HttpClient marrrang.tistory.com Feign에서 Hystri..
배포 전략에 대해서 웹 개발 혹은 어떤 개발을 하더라도 서버가 있고 그곳에 나의 애플리케이션을 구동시킨다면 배포라는 것을 피할 수 없습니다. 그리고 배포의 방식의 차이는 잠깐의 서비스 중단을 만들 수도 있고 배포 시간이 길어지는 리소스적인 측면과도 관계가 있습니다. 이에 맞춰서 개발자들은 여러가지 배포 전략을 구상했습니다. 서비스의 멈춤 없이 무중단 배포를 진행하기 위해서 혹은 배포 후 오류가 났을 때 관리하기 위해서 같이 여러 이유에서 말이죠. 아래에서 가장 많이 사용하는 배포 전략들에 대해 간단히 알아보겠습니다. 여러 가지 배포 전략 Rolling Update Deployment (롤링 배포) Blue Green Deployment (블루-그린 배포) Canary Deployment (카나리 배포) Rolling Upd..
[주클] 주관적인 클린 코드 - formatting, import optimizing 이 시리즈는 어떤 코드가 좋은 코드일까라는 질문에 답하기 위한 저의 주관 100%의 시리즈입니다. 제가 생각한 것이 정답이 아닐 확률이 높습니다. 여러분들이 생각했을 때 더 좋은 방법이 있다 하시면 댓글로 달아주세요! 새로운 회사에 첫 출근 이후 코드를 새롭게 보고 있습니다. 여러 사람들의 코드가 이곳 저곳 섞여 있네요. 줄 맞춤이 좀 이상한데..? 다들 줄 맞춤도 다르고 Tab, Space가 섞여있네요.. 제가 생각하는 클린 코드의 궁극적인 목표라고 하면 누가 봐도 보기에 편한 코드인것 같습니다. 어차피 클린(깨끗한)은 사람이 느끼는거지 기계가 느끼는게 아니니까요. 그래서 제가 요새 든 생각중에 하나는 업무를 시작할 때 코드의 포맷팅은 맞추고 시작해야한다고 느꼈습니다. 새로운 인원이 팀에 추가되면 모든..
[프로그래머스] N으로 표현 (C++, Java) 카테고리 DFS 나만의 카테고리 DFS 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr 요점 연산의 양을 많지 않게 하는 조건 + 전체 다 계산 필요 => DFS 참고 지식 DFS Math.min() 풀이 (Java) import java.util.*; class Solution { // 8이하 값이므로 final int MAX_COUNT = 9; int minAnswer = MAX_COUNT; public int solution(int N, int number) { dfs(N, number, 0, 0); if (minAnswer >= MAX_COUNT) { return -1;..
[주클] 주관적인 클린 코드 - 유비쿼터스 언어와 네이밍의 중요성 이 시리즈는 어떤 코드가 좋은 코드일까라는 질문에 답하기 위한 저의 주관 100%의 시리즈입니다. 제가 생각한 것이 정답이 아닐 확률이 높습니다. 여러분들이 생각했을 때 더 좋은 방법이 있다 하시면 댓글로 달아주세요! 제가 새로운 팀에서 업무를 진행하거나 다른 분의 코드를 새로 보면서 업무를 진행해야하는 상황에서 느낀 점은 함수명, 변수명 등, 이름을 잘 선택해야한다 입니다. 어느 회사에 처음 들어가서 새로운 코드를 봤습니다. aoc? dv? 이게 무슨 말일까요? 모든 회사, 모든 팀은 각자의 Ubiquitous Language(보편 언어)가 존재할 것입니다. 팀 내부에서 사용하는 특정 지칭어 혹은 의사소통을 편하게 하기 위한 줄임말들 같은 것들을 말합니다. 이미 익숙해져 있는 분들에게는 너무나 당연한 ..
[Flutter] SocketException: OS Error: Connection refused, errno = 111, address = localhost 에러 해결 방안 에러 메시지 : SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 35658 발생 환경 API를 로컬 환경에 띄워 놓고 Flutter로 개발중인 어플에서 호출시에 발생 API 주소의 도메인은 "localhost"를 사용 에러 발생 이유 Android Emulator 사용시에 AVD는 현재 개발중인 컴퓨터의 환경이 아닌 모바일 환경에서 작동중인 것이고 이때 localhost를 사용한다고 해도 모바일 내에 alias가 설정되어 있다면 그쪽으로 접근하려고 할 것이고 접근이 거부되어 에러가 발생합니다. 수정 방안 따라서 localhost alias를 사용해야하는 경우를 자신의 IP를 직접 입력하는 방식으로..
[주클] 주관적인 클린 코드 - NPE 피하기 이 시리즈는 어떤 코드가 좋은 코드일까라는 질문에 답하기 위한 저의 주관 100%의 시리즈입니다. 제가 생각한 것이 정답이 아닐 확률이 높습니다. 여러분들이 생각했을 때 더 좋은 방법이 있다 하시면 댓글로 달아주세요! 제가 Java를 사용해서 코드를 작성하고 테스트 중에 가장 민감하게 느껴지는 예외는 Null Pointer Exception입니다. 이는 처음 개발에 대해서 배울 때도 여러 번 주의를 들었던 부분이어서 그런 것 같기도 합니다. Null Pointer Exception(이하 NPE)는 왜 발생할까요? Null인 객체를 참조하여 발생하는 Runtime Exception입니다. 즉, Null인 객체를 이용하여 무언가를 하려고 한다면 에러가 발생합니다. NPE를 발생하지 않게 하려면 어떻게 해야 ..
[Spring] @InitBinder에 대해서 최근에 Spring 관련해서 보안 이슈가 하나 있었습니다. JDK 9 버전 이상의 모든 Spring Core에서 원격 코드 실행이 가능한 0-Day Exploit의 취약점이 알려졌습니다. 그리고 패치 이전에 공격코드가 이미 알려진 상태였습니다. https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/ Spring4Shell: Security Analysis of the latest Java RCE '0-day' vulnerabilities in Spring | LunaSec We've been taking a look at the new zero-day exploit, dubbed Spring4Shell, supposedly discovered in S..
[Kafka] Kafka Connect란? Kafka Connect라는 것에 대해 처음 들어보고 살짝 공부한 뒤 느낀 점을 정리한 글입니다. 정확하지 않은 정보일 수 있습니다. Kafka Connect란? Kafka Connect는 카프카로 작업을 해야하는 경우 데이터 파이프라인 생성 및 반복적인 작업을 줄여주는 역할을 하는 도구입니다. 간단하게 요약하자면 반복적인 작업을 템플릿화하는 도구라고 보입니다. 기존에는 만약 여러 애플리케이션에서 비슷한 Kafka 파이프라인을 구성한다면 어떻게 되는지 보겠습니다. 기존의 방식이라면 바로 위의 그림처럼 각각 거의 동일한 프로듀서를 여러 번 만들고 그림에 나와 있지는 않지만 컨슈머도 동일하게 많은 작업을 요구하게 됩니다. 이는 애플리케이션이 많아질수록 더 부담되는 작업입니다. 이를 해결하기 위해 Kafka ..
[Java 13 ~] Text Blocks Java Text Blocks java 13부터 제공되는 기능 중에 Text Blocks가 있습니다. 굉장히 유용한 기능이라고 보기는 어렵지만 이전에 html을 반환해주는 상황이거나 혹은 String을 여러 줄 작성해야 할 때 사용 가능한 기술입니다. 기능 여러줄의 String을 하나의 block에 작성할 수 있게 해 준다. 예시 public String textBlocks() { return """ """; } Text Block은 "(큰따옴표) 3개로 작성합니다. 내부에 원하는 Text를 작성하면 완성입니다. // Text Block안에 "(큰따옴표)는 escaping이 필요없습니다 public String textBlocks() { return """ "escape가 필요없다" """; } // f..