전체 글

개발, PO, PM, 기획과 관련된 서비스 관련 업무에 관심이 있습니다. 또한 성장,교육과 관련된 주제에 대해서도 관심이 많습니다. 티타임을 좋아하는 사람으로써, 혹시 티타임에 관심이 있으신 분은 ksy90101@gmail.com로 메일 보내주시면 감사하겠습니다 :)
💡 영상https://www.youtube.com/watch?v=HSNyJnobBws세미나 내용이번에 API 서버를 하나 만들었는데, “성능이 아주 빨라 / 안정적이야 / 좋아 / 높아” 라는 말을 많이 한다. 그럼 이게 어떤 의미일까?이런말이 있다. “많은 사람들이 사용해도 API 응답 시간이 짧고 안정적이다.”그럼 여기서 의문점이 생긴다. 많은사람? 응답시간이 짧고? 안정적얼마나 많은 사람? 어느정도 시간이면 짧은거야? 마음의 안정이라는거야?두가지 상황10명이 동시에 호출햇을 때 1초 안에 모두가 응답을 받음 vs 100명이 동시에 호출했을 때 10초 안에 모두가 응답을 받았다.둘중에 어떤게 더 빠른가? 정답이 없다.1초동안 5개의 처리를 동기적으로 할수도 있고, 1초동안 병렬로 5개를 처리할수도 ..
시스템 설계 면접이란 두 명의 동료가 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션이다. 이 문제에는 정해진 결말도 없고, 정답도 없다. 설계 기술을 시연하는 자리이고, 설계 과정에서 내린 결정들에 대한 방어 능력을 보이는 자리이며, 면접관의 피드백을 건설적인 방식으로 처리할 자질이 있음을 보이는 자리이다.많은 사람이 시스템 설계 면접은 지원자의 설계 능력의 기술적 측면을 평가하는 자리일 거라 생각한다. 사실은 그 이상이다. 지원자가 협력에 적합한 사람인지, 압박이 심한 상황을 헤쳐 나갈 자질이 있는지, 문제를 해결할 능력이 있는지 좋은 질문을 던질 능력이 있는지등을 살펴볼 수 있다.훌륭한 면접관은 부정적 신호도 놓치지 않는다. 설계의 순수성에 집착한 나머지 트레이드오프를..
· Backend/Java
서론이제 실제 콘솔 애플리케이션이 동작하도록 실제 View와 Controller의 결합을 해보도록 하겠습니다.View실제 사용자가 값을 입력하고, 로직이 실행된 뒤의 결과를 출력하기 위한 계층으로 우리는 콘솔 애플리케이션이니 입력은 Scanner 를 통해 받고, 출력은 System.out.println 을 통해 합니다.public static int inputGameRecordId() { System.out.println("게임 기록을 조회할 ID를 입력해주세요."); return scanner.nextInt();}입력 받는 값은 게임 기록을 조회할 ID입니다.단순히 이걸 입력 받을 수 있는 메서드를 만들어서 처리해주면 됩니다.package baseball.view;import baseball..
💡 원본글Top 10 REST Interview Questions for Java and Spring Developers Top 10 REST Interview Questions for Java and Spring DevelopersThese are the best REST Interview Questions for Java and Spring developers to prepare quicklymedium.com 여러분 안녕하세요. Java, Spring 개발자 면접을 준비하고 있으며 Spring REST 면접 질문을 찾고 계신다면 이 글에 잘 찾아왔습니다.이전에, 저는 Spring 개발자 면접을 위해 준비해야 할 13가지 필수 주제와 Spring Framework, Spring..
· Backend/Java
서론지금까지 우리는 요구사항 분석과 테크스펙 작성을 통해 전체적인 흐름을 살펴보았으며, 도메인, VO, 일급컬렉션 등을 작성하여 객체지향설계에서 가장 중요한 객체를 직접 구현해보았습니다.그 과정에서 우리는 테스트 코드를 추가하여 안정적으로 우리가 설계한 대로 동작하는지, 또한 요구사항 정책에 따라 정상적으로 동작하는지를 확인하보았습니다.이번 Step2의 목표는 기록 조회가 목표입니다.다른 것 보단, 기록을 조회를 중점으로 설명합니다.getGames(전체 기록 조회) / getGame(단건 기록 조회)사용자 스토리상 플로우를 생각한다면, 아래와 같습니다기록을 전체 조회해서 각 기록에 대해서 간단한 정보를 확인합니다.[1] / 시작시간: / 종료시간: / 횟수: [2] / 시작시간:..
· Backend/Java
서론 이전 장에서는 숫자야구게임의 정책문서를 작성하며, 테크스펙을 작성해 개발시 문제가 될 영역들을 체크해봤다. Step2에서 필요한 도메인 로직을 추가하고, Game이라는 도메인을 만들어서 하나의 Game에 도메인 관리를 하는 것을 목표로 리팩토링 및 구현을 해보겠습니다. 이번 미션부터는 인자, 멤버 변수, 지역 변수 등에 최대한 final을 붙여 불변을 유지하는 것이 목표입니다. 또한 Value Object를 record로 변경합니다. Java17부터는 record를 지원합니다. Value Object인 경우엔 record가 어울리는 형태이기 때문에 record로 변경해서 진행합니다. Game Game의 모든 정보를 가지고 있습니다. 유니크한 값으로 구분할 PK, 게임에 할당된 Computer, Pl..
개략적인 규모 추정이란 보편적으로 통용되는 성능 수치를 추정치로 계산하는 행위로써 어떤 설계가 요구사항에 부합할 것인지 보기 위함입니다. 2의 제곱수 이름 기호 같은 값 10진 측정값 이름 기호 같은 값 10진 측정값 비트 Bit 데이터의 최소 단위 (0 또는 1) 바이트 Byte 8Bit 킬로바이트 KB 1,024 Byte 10^3 메가바이트 MB 1,024KB 10^6 기가바이트 GB 1,024MB 10^9 테라바이트 TB 1,024GB 10^12 페타바이트 PB 1,024TB 10^15 엑사바이트 EB 1,024PB 10^18 제타바이트 ZB 1,024EB 10^21 요타바이트 YB 1,024ZB 10^24 모든 프로그래머가 알아야 하는 응답 지연값 결론 메모리는 빠르지만 디스크는 아직도 느리다. ..
단일서버 웹,앱, 데이터베이스, 캐시 등이 모든 리소스들이 전부 서버 한대에서 실행된다. DNS를 통해 해당 도메인의 IP주소를 요청한다. DNS는 해당 도메인 주소의 IP를 반환한다. 해당 IP 주소로 HTTP 요청이 전달된다. 요청을 받은 웹 서버는 응답을 반환한다. 데이터베이스 사용자가 늘어나면 부하 분산을 하기 위해 여러 서버를 두어야 한다. 단말기에서 오는 요청을 처리하는 서버인 웹 계층과 데이터베이스 서버인 데이터 계층으로 분리하여 독립적으로 확장할 수 있게 한다. 데이터베이스의 종류는 관계형 데이터베이스와 비-관계형 데이터베이스가 있다. 자세한 내용은 아래를 참고하세요. NoSQL vs RDBMS NoSQL vs RDBMS Data Base 여러 사람들이 공유하고 사용할 목적으로 통합 관리되..
💡 영상 쉽게 설명하는 29CM Architecture Manifesto 세미나 내용 빠른 성장, 그러나… 지금까지 잘해왔다는 것이 이후에도 잘할 것이라는 것을 보장하는 것은 아니다. 지금까지의 결과는 과거 시점과 과거 실행에 따른 결과일 뿐이고, 우리가 앞으로 어떻게 행동하고 어떻게 실행 했을때 좋은 결과를 낼 수 있는 가를 보장하는 것이 아니다. 이제는 고객의 기대치, 다양한 요구사항, 늘어나는 트래픽에 맞는 새로운 구조가 필요하다. 특정 시점에서는 다음 단계의 성장을 지원하기 위해 매우 근본적인 것들을 해야 한다. 기존 트래픽, 성능 30%, 60% 향상 시키는건 기존 설계에서 가능하다. 그러나 트래픽이 몇배로 되는걸 버티기 위해서 개발방식, 구조등을 바꿔야 한다. 3주년의 잠 못 이루는 밤 더 빠..
· Backend/Java
💡 원본글 Five API Performance Optimization Tricks that Every Java Developer Must Know Five API Performance Optimization Tricks that Every Java Developer Must Know Why is your API response so slow? Maybe you need to solve these problems. medium.com 왜 당신의 API 응답이 느린가요? 이런 문제를 해결해야 할 필요가 있을수 있습니다. 백엔드 개발자로서, 프론트엔드 웹에 데이터를 제공하기 위한 HTTP REST API이든, 내부에서 사용을 위한 RPC API이든 우리는 항상 다양한 API들을 작성하고 있습니다. 이 API..
Seyun(Marco)
Enthusiastically, Steady, Slowly