전체 글

· Java
상황 현재 어떤 서비스는 여러 파드 기반에 하나의 파드 내에서 @Schedule 어노테이션을 통해서 하나의 스케줄러가 동작을 하고 있는 상황이다. 일정한 양의 데이터를 처리한다면 이슈가 없겠지만, 갑자기 데이터가 많아진다면 현재의 스케줄러가 부하가 있을 수 있는 상황이다. 어떻게 대처를 할 것인지? 해결방안 생각 각 파드마다 스케줄러를 돌리게 하는 동시에 데이터들을 각 파드에 나눠서 처리하게 하는 방식 환경변수를 이용해서 조건절을 사용하는 방식으로 분할해서 처리하는 방식을 생각할 수 있을거 같음 스케일 업 하는 방식 큐를 사용하는 방식 RabbitMq나 Kafka를 써서 순서대로 데이터 오는데로 Bulk 단위로 처리하는 방식 한 파드 내에서 스케줄러 처리에 대해서 한계가 있으므로 큐에 모이는 속도를 딜레..
면접 제안은 많이 들어오지만 사실 합격까지는 잘 되지 않는 상황이다. 그래서인지 현재 공부하는게 제대로 맞는건가 의문이 들때가 많아서 사실상 지금은 공부를 제대로 하고 있지도 않은 상태다. 다시 말하면 1년전만큼 공부하지 않고 여전히 놀고 있다. 이대로 가다가는 영원히 한 회사에서 머물거 같은 느낌이 많이 들었다. 7개월전부터 나는 ADHD 진단을 받아서 지금은 메디키넷 30mg 을 하루에 2번 복용하고 있다. (이 정도라면 의사선생님께서 말씀하시길이 정도 복용량이면 꽤 쎈 양이라 한다.).면접을 보는데 말하다가 질문을 까먹거나 혹은 집중을 제대로 못해 이해하지 못한 상황이 종종 일어났다. (사실 현 회사에서도 이 부분때문에 고통받는 부분도 있다.). 물론 이전부터 이런 증상은 어렸을 적부터 쭉 있어왔던..
· web
웹 개발에서 성능 최적화는 사용자 경험을 결정하는 중요한 요소입니다. 이 중에서도 캐싱은 빠른 데이터 접근과 서버 부하 감소에 핵심적인 역할을 합니다. 오늘은 캐싱 알고리즘의 기본 원리와 주요 알고리즘 종류에 대해 살펴보겠습니다. 캐싱이란 자주 사용되는 데이터를 미리 메모리에 저장해 두어, 필요할 때 빠르게 접근할 수 있도록 하는 기술입니다. 이는 데이터베이스나 파일 시스템과 같은 상대적으로 느린 저장소 대신, 빠른 접근이 가능한 메모리에 데이터를 보관합니다. 가장 많이 사용되는 캐싱 알고리즘은 다음과 같습니다: LRU (Least Recently Used): LRU 알고리즘은 가장 오랫동안 사용되지 않은 데이터를 캐시에서 제거하는 방식으로 작동합니다. 이는 최근에 사용된 데이터가 미래에 다시 사용될 가..
· Java
서론 Java 8의 출시와 함께 소개된 스트림 API는 데이터 컬렉션 처리 방식에 혁신을 가져왔습니다. 이 포스팅에서는 스트림의 핵심 개념과 이를 통해 얻을 수 있는 주요 이점을 탐색해 보겠습니다. 자바 스트림이란? 스트림은 '데이터의 흐름'을 추상화한 Java 8의 기능입니다. 컬렉션 요소를 하나씩 참조해 처리할 수 있도록 해주며, 람다 표현식과 함께 사용되어 코드의 간결성과 가독성을 크게 향상시킵니다. 스트림의 주요 연산 1. 필터링(filter): 조건에 맞는 요소만 추출합니다. List names = Arrays.asList("Alice", "Bob", "Charlie"); List filteredNames = names.stream().filter(name -> name.startsWith("A..
오랜만에 이번 주는 다른 날보다 한가했다. 평소에는 밥먹듯이 야근을 계속했었는데, 이번엔 왠지 죽다살아난 느낌이였다. 여태까지는 2주정도는 야근하면서까지 집에 돌아오면 1-2시간이라도 면접연습을 계속했다. 너무 힘들다 싶으면 적어도 1주일에 한 번 이상은 5km 정도 달리기를 하면서 체력을 보충했다. 그래도 힘든건 여전했지만 이번 주 운영서버 배포가 그나마 잘 성공이 되어서 적어도 내 영역에 대해서는 주말까지는 일할 필요가 없게 되었다. (물론 저번주에는 다른 영역에서 이슈가 있어 새벽 3시까지 근무하기도 했다.) 금요일은 사실 면접이 2개가 있는 날이였다.(오전, 오후). 그런데 당일 날 배포 후에 실서버 대응을 해야할 상황일 수도 있는데, 다행히 이슈가 없어서 전화가 오거나 그러진 않았다. 아무튼 면..
· Java
서론 자바 개발자라면 누구나 한 번쯤은 `hashCode()`와 `equals()` 메소드에 대해 들어봤을 것입니다. 이 두 메소드는 객체의 동등성을 처리하는 데 중요한 역할을 하며, 특히 해시 기반의 컬렉션을 사용할 때 이들의 중요성은 더욱 부각됩니다. 이 글에서는 왜 이 두 메소드를 항상 함께 오버라이드해야 하는지에 대해 설명하겠습니다. 본론 1. **`equals()` 메소드의 역할** - `equals()` 메소드는 두 객체가 같은지를 결정합니다. - 자바의 `Object` 클래스에 있는 기본 `equals()` 메소드는 객체의 참조를 비교합니다. - 하지만, 대부분의 경우 객체의 내용이 같으면 같은 객체로 간주하는 것이 바람직합니다. - 따라서, 객체의 상태나 값이 같을 때 같은 객체로 인식되도..
어느덧 이직 준비한지 10개월 정도가 넘었다. 그런데 1차 면접에서 제대로 붙은적이 거의 붙었던적이 없었던 거 같다. (물론 눈을 낮춘 이래로는 서서히 붙고 있음) 내가 생각하기에는 11월 중후반부터 눈을 낮추기 시작할때는 면접관 질문에 대해서 버벅거린적은 거의 없었다고 생각한다. 난이도가 확 낮아져 버린게 체감이 느껴지긴 하다. 그럼에도 불구하고 떨어지는 이유는 분명 있다고 생각한다. 애초에 떨어트릴꺼면 면접에 부르지도 않을거라고 생각한다. 그렇게 눈을 낮춘 이래로는 1달에 3-4번정도는 면접이 계속해서 잡힌다. 지금 1월달인데 다음 주, 다다음주까지 포함하면 면접이 3개정도 예정되어 있고, 저번주에 면접을 한 번 봐서 탈했었다. 저 4개 보는 회사에서 현 회사보다 큰 회사는 없지만, 그래도 가고 싶은..
· spring
스프링 프레임워크의 장점 1. 강력한 생태계와 지원 : 방대한 커뮤니티와 라이브러리, 툴의 통합 지원. 2. 안정성과 확장성 : 기업 수준의 대규모 서비스 운영에 적합. 3. 보안 기능 : 스프링 시큐리티를 통한 강력한 인증 및 권한 부여. 4. 종합적인 솔루션 제공 : 웹 개발 뿐만 아니라, 다양한 백엔드 기능 지원. 스프링 프레임워크의 단점 1. 높은 학습 곡선 : 초보자에게 다소 복잡하고 어려움. 2. 무거움 : 상대적으로 많은 리소스 사용과 긴 구동 시간. 3. 설정의 복잡성 : 다양한 구성과 설정 필요. FastAPI의 장점 1. 뛰어난 성능 : Starlette과 Pydantic 기반의 고성능. 2. 간결한 코드 : 직관적이고 선언적인 API 디자인으로 코딩 효율성 증가. 3. 자동 문서 생성..
· spring
1. 서론: 스레드와 동시성 문제 소개 - **스레드의 기본 개념 설명**: 프로세스 내에서 실행되는 실행 흐름의 단위. - **동시성 프로그래밍의 중요성**: 다양한 작업을 동시에 처리하는 능력이 시스템의 효율성을 높임. - **동시성 문제의 예시**: 데이터 공유 시 발생할 수 있는 충돌, 경쟁 상태(race condition) 등. - **ThreadLocal의 소개**: 이러한 문제를 해결하기 위한 자바의 도구로서의 ThreadLocal. 2. ThreadLocal의 작동 원리 - **ThreadLocal 클래스**: Java의 `java.lang.ThreadLocal` 클래스 소개. - **주요 메서드 설명**: `set()`, `get()`, `remove()`, `initialValue()`..
· Java
'synchronize' 키워드가 함수에 적용될 때의 동작 방식은 다음과 같습니다: Mutual Exclusion (상호 배제): 'synchronize' 키워드가 적용된 함수나 블록은 한 시점에 하나의 스레드만 실행할 수 있습니다. 즉, 한 스레드가 'synchronized' 함수를 실행하고 있는 동안, 다른 스레드들은 해당 함수 또는 블록에 접근할 수 없습니다. Locks on Objects: Java에서 'synchronize' 키워드는 객체에 락을 걸게 됩니다. 메소드가 'synchronized'로 선언되면, 해당 메소드를 호출하는 객체는 락을 획득합니다. 이는 객체 레벨에서 동기화를 제공합니다. 만약 'synchronized' 블록이 사용된다면, 특정 객체에 대한 락을 지정할 수 있습니다. Me..
개발만파볼까
신입 개발자의 하루