2025년 + 2026년 1분기 회고 (feat. SW 마에스트로, 취준)
·
회고
들어가며2025년과 2026년 지금까지 한 것도 많고 회고글을 적으려는 시도를 많이 하긴 했지만 계속해서 일정이 쌓여서 미뤄왔다. 그러다 너무 주어진 태스크를 처내는 것에만 에너지를 쏟고 있고 이로 인해 너무 생활이 정신없이 지나간다는 느낌이 들어 뭔가를 해야겠다는 생각이 들었고 그 중 하나로 그동안 미뤄왔던 블로그 글쓰기를 다시 시작하기로 했다. 그 첫번째 글로 많이 늦었지만 회고를 하기로 했다.2025년과 2026년 상반기는 정말 많은 일이 있었던 기간이었다. 2025년은 SW마에스트로 과정을 수료하고 몇몇 회사에 지원을 하게 되었다. 그 중 두나무, 토스, 서치독이라는 회사에서 서류 이후의 채용 전형을 진행하였고 현재는 서치독이라는 회사에서 3월 중순부터 근무를 하고 있다. sw마에스트로는 이미 회..
SW 마에스트로 수료 후기
·
SW마에스트로
들어가며올해 4월에 시작했던 sw마에스트로(일명 소마)를 2주 전 최종 발표를 마무리로 수료하였습니다. 다음주에 수료식이 남아있지만 이것저것 마무리 짓고 최대한 빠르게 소감을 남기려고 합니다.소마를 지원한 이유작년(2024년)에 우아한 테크코스(일명 우테코)를 수료했습니다. 우테코로 처음 백엔드를 접했는데 이전에 했던 프론트나 게임 개발보다 너무 재밌어서 백엔드로 진로를 확정지었습니다. 그런데 2학년을 마치고 휴학한 뒤 우테코를 수료했기 때문에 아직 학교가 4학기나 남아있었고 남은 2년 동안 학교만 다니면 우테코 1년 동안 쌓아온 개발에 대한 몰입이 다 사라질 것 같단 생각이 들었습니다. 그래서 사이드 프로젝트와 함께 백엔드에 대해 더 학습할 수 있는 방법을 찾았었고 소마에서 프로젝트에 대한 비용 지원 ..
2025 토스 NEXT 지원 후기
·
취준
들어가며이번에 열렸던 2025 토스 NEXT에 Server 직무로 지원했습니다. 결과적으로 마지막 문화적합성 면접에서 탈락했지만 얻은 게 많은 면접이어서 이를 계속 기억하기 위해 후기를 적습니다.배경저는 컴퓨터 공학 전공이지만 군대를 마치고 2학년때 전과를 한 케이스입니다. 그리고 전공 수업을 듣다가 정말 자바 문법만 알고 있는 상태로 작년에 우아한 테크 코스를 수료하고 현재 3학년을 다니며 SW 마에스트로를 병행하고 있습니다. 그렇기에 웹 개발을 작년에 시작하여 이제 막 2년 정도 했고 프로젝트는 우아한 테크 코스 프로젝트, 우아한 테크 코스 크루들과 하고 있는 프로젝트, SW 마에스트로 프로젝트 3개만 했던 상태입니다. 작년에는 토스 NEXT가 9월 말에서 10월 초에 있어서 이때까지 준비할려 했는데..
동기/비동기, 블로킹/논블로킹은 무엇이고 각각의 차이점은 무엇인가요?
·
CS
📝 면접 답변 보기 동기와 비동기는 '작업 결과를 누가 처리하냐'의 문제입니다.동기는 호출한 쪽에서 결과를 직접 받아서 처리하고, 비동기는 콜백이나 이벤트를 통해 나중에 별도로 처리됩니다. 블로킹과 논블로킹은 '제어권을 언제 돌려주냐'의 문제입니다.블로킹은 작업이 끝날 때까지 제어권을 반환하지 않아 대기하게 되고, 논블로킹은 작업 완료와 관계없이 즉시 제어권을 돌려줘서 다른 작업을 할 수 있습니다. 면접 질문 정리용 레포지토리https://github.com/unifolio0/backend-interview-study.git GitHub - unifolio0/backend-interview-studyContribute to unifolio0/backend-interview-study developmen..
@Async는 어떻게 동작하나요?
·
CS
📝 면접 답변 보기@Async는 스프링 AOP를 통해 동작합니다.스프링이 @Async가 붙은 메소드를 발견하면, 해당 클래스의 프록시 객체를 생성해서 빈으로 등록합니다.다른 빈에서 이 서비스를 주입받으면 실제로는 프록시 객체가 주입되고, 메소드를 호출하면 프록시 안에 있는 MethodInterceptor가 AsyncExecutionInterceptor를 실행합니다.AsyncExecutionInterceptor는 TaskExecutor를 사용해서 새로운 스레드에서 실제 메소드를 실행하고, 호출한 쪽에는 즉시 리턴해서 비동기 처리가 가능해집니다.중요한 점은, 같은 클래스 내부에서 @Async 메소드를 직접 호출하면 프록시를 거치지 않기 때문에 비동기로 동작하지 않습니다. 면접 질문 정리용 레포지토리http..
동시성 문제 해결하기
·
Side Tech Notes
[개요]해당 글은 예약 생성 및 수정 과정에서 발생한 동시성 문제를 다룹니다. 이를 해결하기 위해 애플리케이션, 데이터베이스, 인프라 각 수준에서 적용할 동시성 제어 기법을 검토하고 선택한 기술적 접근 방식에 대해 설명합니다.[요약]동시성 문제 해결을 위해 애플리케이션, 데이터베이스, 인프라 각 수준에서 동시성 제어 기법을 직접 경험하고 검토한 결과, Redis 분산락을 도입하여 동시성을 해결하는 전략을 선택하였습니다.[문제 상황]아래는 예약을 생성하는 로직입니다.[문제 상황 시뮬레이션]직접 작성한 테스트 코드로 동시에 여러 개의 요청이 들어오는 상황을 시뮬레이션한 결과, DeadLock이 발생했습니다.[문제 상황 분석]reserve메소드에는 @Transactional이 걸려있습니다. 이때 INSERT나..
컴퓨터의 병렬 처리 기술
·
CS
들어가며이 글을 읽고 있는 지금 기기에서 어떤 작업을 하고 있나요? 이 글을 읽으며 음악을 듣거나 파일을 다운로드 하고 있을 수도 있고 또는 글을 적기 위한 참고자료로 활용하며 문서 작업을 하고 있을 수도 있습니다.일반적으로 컴퓨터의 cpu는 1개입니다. 그럼에도 컴퓨터는 위 같은 병렬 작업을 당연하다는 듯 수행하고 있습니다. 6코어, 10코어와 같이 코어가 여러 개라 가능하다 생각할 수도 있지만 생각해보면 코어 수보다 더 많은 작업들을 수행 할 때가 있습니다.운영체제를 공부하다보면 멀티 프로그래밍, 멀티 태스킹, 멀티 프로세싱, 멀티 코어, 멀티 스레딩이란 단어들을 마주할 수 있습니다. 이런 기술들로 인해 하나의 기기에서 여러 작업들을 동시에 할 수 있습니다. 하지만 대략적인 것만 알고 정확한 개념이나..
분산 트랜잭션과 합의
·
Side Tech Notes
들어가며요즘 여러 대규모 서비스들은 MSA를 사용하고 있습니다. 이는 각 서버별로 확장을 용이하게 하며 한 서비스의 장애가 다른 서비스로 옮겨가지 않도록 해줍니다.하지만 MSA가 장점만 가지고 있지는 않습니다. 대표적으로 트랜잭션의 문제가 있습니다.예를 들어 주문 서비스와 재고 서비스가 분리된 온라인 쇼핑몰을 생각해봅시다. 여기서 주문을 처리하던 도중 서버가 다운됐다고 가정하겠습니다. MSA에선 일반적으로 각 서비스가 서로 다른 DB를 가지고 있어 트랜잭션이 보장되지 않습니다. 즉, 주문은 생성됐지만 재고가 차감되지 않거나 재고는 차감됐지만 주문이 생성되지 않는 문제가 발생할 수 있습니다. 이처럼 분산 시스템에서는 여러 노드가 하나의 작업에 대해 일관된 결정을 내리기가 쉽지 않습니다.그렇기에 과거부터 계..
리액터 패턴 / 프로액터 패턴
·
Side Tech Notes
들어가며리액터 패턴과 프로액터 패턴을 알아보기 위해 간단한 요구사항을 정의하겠습니다. 지금 미디어 처리 서비스를 개발하고 있습니다. 이 서비스에서는 사용자가 업로드한 미디어에 대해 여러가지 편집 기능을 제공해야 합니다. 썸네일 생성 기능, 워터마크 추가 기능, 포멧 변경 기능과 같은 기능들이 말이죠. 또한 설명의 용이함을 위해 싱글 스레드로 동작한다고 가정하겠습니다.1차 해결책: switch위의 요구사항을 반영하는 방법으로 깊은 고민 없이 switch문을 사용하기로 했습니다. 아래의 코드와 같이 말이죠.while (true) { MediaRequest request = getNextRequest(); switch (request.getType()) { case "THUMBNAIL_GENERA..
HA 아키텍처
·
System Architecture
고가용성이란HA(High Availability) 아키텍처는 말 그대로 고가용성 아키텍처를 의미합니다. 여기서 가용성이란 시스템이 정상적으로 사용가능한 정도를 의미하는 말입니다. 즉, 전체 시간 중 시스템이 다운되지 않고 정상적으로 사용가능한 시간의 비율입니다.현대 서비스에서 가용성은 직접적인 매출과도 관련된 중요한 속성입니다. 예를 들어 시간 당 1억씩 버는 쇼핑몰의 경우 1시간 동안 장애가 발생하면 1억의 손실이 발생하게 됩니다. 또한 할인 이벤트와 같이 서비스에서 중요한 순간에 장애가 발생하면 매출뿐만이 아니라 사용자의 경험에 안 좋은 영향을 주어 기회비용까지 잃게 됩니다. 즉, 브랜드 신뢰도와도 연관된 성질입니다. 이런 가용성을 백분율로 표시해놓은 수치가 있습니다. 아래 표는 위키피디아에서 가져왔..