[SOPT] 38기 Server YB 파트 면접 합격 후기
·
회고/기타
SOPT 38기 YB에 합격했었다! 면접 때 너무 떨려서 끝나고도 걱정했는데, 합격해서 정말 다행이다. 기억이 더 흐려지기 전에 면접 준비 과정과 실제로 받았던 질문들을 남겨보려고 한다.면접 준비 — 내적 친밀감 쌓기면접에서 조금이라도 덜 긴장하려고 인스타그램과 유튜브로 회장단, 파트장님 얼굴을 계속 봤다. 이름도 외우면서 혼자 열심히 내적 친밀감을 쌓았다. 😂다른 기수 후기를 보니 기술 질문도 많이 받았다고 해서 기술 면접 공부도 하고 갔다. 그런데 이번에 내가 받은 질문은 대부분 경험이나 생각에 관한 것이었다. 준비한 걸 많이 이야기하지 못한 건 조금 아쉬웠다. 그래도 기수나 면접에 따라 질문이 달라질 수 있으니, 다른 후기들도 참고해서 준비하면 좋을 것 같다.면접 전 아이스브레이킹본격적인 면접에 ..
외부 API 호출 없이 장소 주소로 도시별 현재 시각 계산하기
·
Back-end/Spring
문제 발생 상황Nearby 프로젝트에서는 스페인, 영국, 프랑스의 도시별 현지 시각이 필요했다.SOPT AppJam 데모데이에서는 한국에서 실시간 시연을 진행했기 때문에 애플리케이션의 Clock, HTTP 응답 직렬화, 일부 DB 마이그레이션에 KST 기준이 적용되어 있었다.하지만 서비스를 해외 도시로 확장하려면 특정 국가의 시간대에 종속되지 않는 기준이 필요했다. 이에 서버가 생성하는 시각은 UTC를 기준으로 관리하고, 화면에 보여줄 때 장소가 위치한 도시의 시간대로 변환하기로 결정했다.도시별 현재 시각을 계산할 때 기준이 되는 값은 Instant다.Clock.instant() ↓Instant ├─ atZone(Europe/Madrid) ├─ atZone(Europe/London) ..
[SOPT] 38기 Server YB 서류 합격 후기
·
회고
사실 SOPT 합격한 지는 꽤 오래됐지만... 바쁘다는 핑계로 이제야 적는다...(누군가에게 도움이 될 수 있으면 좋겠다..!)SOPT 서류를 준비한다면 서류 합격 후기 한 글만 찾아보기보다는 정말 많은 글을 찾아보는 걸 추천한다.사람마다 경험도 다르고, 같은 질문이어도 풀어가는 방식이 다 달라서 여러 글을 읽어보는 게 확실히 도움이 많이 됐던 것 같다.서류 TipSOPT에 관심이 있는 분들이라면 알겠지만 서류 합격부터 쉽지 않다... 그렇기에 나는 처음부터 무조건 서류에서 합격한다는 마인드로 적었다. 또한 매 기수마다 키워드가 제시되는데, 이 키워드를 내 경험에 잘 녹여내는 것도 중요하다고 생각한다. 여기에 각 파트별 인재상까지 자연스럽게 넣을 수 있다면 훨씬 좋다!나는 글을 적으면서 내가 하고 싶은 ..
AI가 코드를 너무 많이 쓴다면? Ponytail
·
Tools/AI
​개발 커뮤니티를 자주 보셨다면 이 이미지를 한 번쯤 보셨을 것 같습니다.저도 요즘 AI 코딩 에이전트를 사용할 때 Ponytail을 거의 항상 붙여서 사용하고 있습니다. 직접 진행 중인 Nearby 프로젝트에도 적용해 봤는데요.처음에는 규칙이 프롬프트에 추가되니 입력 문맥이 조금 길어지는 것처럼 보였습니다. 그런데 막상 작업을 계속해 보니 생성되는 코드와 수정 범위가 줄어들면서, 전체 작업 시간과 비용은 오히려 줄어드는 게 체감됐습니다.왜 이런 차이가 생겼는지, 바이브 코딩을 하는 사람에게도 Ponytail이 의미가 있는지 한번 정리해 보겠습니다.​1. Ponytail은 무엇인가요?Ponytail은 AI 코딩 에이전트가 ‘가장 게으른 시니어 개발자’처럼 생각하도록 만드는 오픈소스 스킬입니다.여기서 게으..
Spring Boot 요청 처리 흐름: DispatcherServlet부터 JSON 응답까지
·
Back-end/Spring
Spring Boot로 REST API를 만들면 컨트롤러 메서드 몇 줄만으로 JSON을 반환할 수 있다.존재하지 않는 주소에 접속하면 오류 페이지나 JSON 오류 응답도 자동으로 만들어진다. 하지만 이 과정은 컨트롤러 하나가 전부 처리하는 것이 아니다.컨트롤러 뒤에서는 다음 구성요소들이 역할을 나눠 요청을 처리한다.DispatcherServletHandlerMappingHandlerAdapter@ResponseBodyJackson 기반 HttpMessageConverterErrorMvcAutoConfigurationSpring Web Starter이 글에서는 HTTP 요청이 컨트롤러에 도달하고, Java 객체가 JSON으로 변환되어 반환되기까지의 흐름을 살펴본다.이 글은 Servlet 기반 Spring ..
모듈식 모놀리스와 헥사고날 아키텍처로 구성된 Nearby 서버 구조 분석하기
·
Back-end/Architecture
아키텍처 선택 이유SOPT에서 세미나, 솝커톤, 합동 세미나 모두 모두 레이어드 아키텍처를 사용해왔다. 하지만 이번 AppJam에서는 새로운 구조를 직접 경험하고, 기존 방식과 어떤 차이가 있는지 알아보고 싶었다.처음에는 어떤 아키텍처가 있고 어떤 걸 선택해야 하는지 또 각 아키텍처가 어떤 특징을 가지는지 충분히 알지 못 하였다. 이후 서버 리드가 제안한 모듈식 모놀리스와 헥사고날 아키텍처의 도입 배경을 듣고, 새로운 구조를 학습할 좋은 기회라고 생각해 해당 아키텍처를 적용하게 되었다.아키텍처를 이해하고 프로젝트 구조를 파악하는 과정에서 가장 많은 도움을 받은 글은 다음 글이었다.미리 회고하자면아키텍처를 선택한 이후 가장 큰 문제는 이를 실제 코드로 구현하는 방법이었다. 팀 내에 모듈식 모놀리스와 헥사고..
Appjam 전 간단한 프로젝트를 연습하려고 했었다...
·
Back-end
사실... Appjam 합숙 전에 모든걸 다 끝내고 들어가려 했으나 못 했고 회고식아니면 나중에라도 더 구체화 시켜서 올려보려고 한다... 아래 있는 글들은 우선 먼저 적어놨던거라도 올리고자 이렇게 적게 되었다.https://github.com/guswnsj0112/spring-auth-board계기이번 SOPT 38기 AppJam에서 운 좋게 Server로 참여 할 수 있게 되었다. 하지만 가장 큰 문제가 있었다. 바로 내가 백엔드를 올해 처음한다는 점이였다. 물론 파트장님께서는 세미나 때 친철하고 잘 알려주셨긴 했지만 학기 중 시간 관리를 못 했던 나에게는 아직 미숙한 부분이 많이 보였다. 그래서 Appjam 시작 전까지는 인증/인가, 엔터티 등 다양한걸 공부해서 가려고 한다.구조우선 서버 리드님과 ..
DDD(Domain-Driven Design)란? 핵심 개념과 계층형 아키텍처
·
CS/Architecture
DDD(Domain-Drvien Design, 도메인 주도 설계) 란?도메인 모델을 기반으로 복잡한 소프트웨어 시스템을 설계하고 개발하는 방법론도메인(Domain)소프트웨어가 해결하고자 하는 문제 영역→ 도메인이 무엇인지 보다는 도메인에 포함되는 것이 무엇인가 정의를 내리는게 더 중요!예를 들어 여행 애플리케이션은 예약, 결제, 여행 일정, 회원 관리 등의 하위 도메인으로 나눌 수 있다. 예약 도메인 안에는 예약 요청, 확정, 취소와 같은 상태와 행위가 존재할 수 있다.이처럼 여러 도메인들이 상호작용하며, 비즈니스 도메인별로 나누어 설계하는 것을 도메인 주도 설계라고 한다.도메인과 객체의 차이점객체(Object)객체는 프로그램에서 특정 개념을 표현하기 위해 상태와 행동을 하나로 묶은 단위이다.객체는 현실..
객체 간의 결합도(Coupling)와 응집도(Cohesion)의 관계
·
CS/Architecture
결합도와 응집도는 소프트웨어 구조 품질을 설명하는 가장 기본적인 두 축이다.결합도 → 모듈 간 의존의 강도를 의미응집도 → 하나의 모듈 내부에서 책임이 얼마나 잘 모여 있는지를 나타냄모듈소프트웨어를 각 기능별로 나누어진 소스 단위모듈은 문맥에 따라 함수, 클래스, 패키지, Gradle 모듈처럼 서로 다른 크기의 소프트웨어 구성 단위를 의미할 수 있다. 결합도와 응집도는 이러한 여러 수준에서 모두 판단할 수 있다.모듈화문제가 복잡하고 큰 문제라면, 이 문제를 작은 부분으로 쪼개나가는 것모듈의 효율성결합도가 낮고 응집도가 높을 수록 모듈화의 효율성이 높다객체지향 언어인지 절차지향 언어인지와 관계없이, 모듈 내부의 관련 기능은 함께 모으고 모듈 사이의 불필요한 의존은 줄이는 것이 좋은 설계의 기본 방향이다.이..
Nginx는 왜 등장했을까? Apache 구조의 한계와 이벤트 기반 웹 서버 이해하기
·
Back-end/DevOps
이번 프로젝트에서 Nginx를 쓰게 되었고 본격적인 프로젝트를 시작하기 전에 왜 Nginx를 사용하는지 정리해보려고 한다"웹 서버는 대부분 Apache나 Nginx를 사용한다. 그 이유가 뭘까?"Nginx 소개Nginx는 고성능의 오픈 소스 웹 서버 소프트웨어로 많은 웹 서버와 리버스 프록시로 널리 사용가볍고 확장 가능한 구조와 높은 처리량이 특징가상 호스팅, 로드 밸런싱, SSL/TLS 암호화, URL 리다이렉션 등 다양한 기능을 제공Nginx 란?Nginx는 다목적 비동기 웹 서버 소프트웨어로, 많은 웹 서버와 리버스 프록시로 널리 사용된다. 주요 목적은 클라이언트 요청을 받아 정적 및 동적 콘텐츠를 처리하여 웹 서비스를 제공하는 것이를 통해 웹 서버의 응답 시간과 처리량을 향상 시킬 수 있다.웹서버..