전체 글

개발, PO, PM, 기획과 관련된 서비스 관련 업무에 관심이 있습니다. 또한 성장,교육과 관련된 주제에 대해서도 관심이 많습니다. 티타임을 좋아하는 사람으로써, 혹시 티타임에 관심이 있으신 분은 ksy90101@gmail.com로 메일 보내주시면 감사하겠습니다 :)
· Backend/Java
서론이제 실제 콘솔 애플리케이션이 동작하도록 실제 View와 Controller의 결합을 해보도록 하겠습니다.View실제 사용자가 값을 입력하고, 로직이 실행된 뒤의 결과를 출력하기 위한 계층으로 우리는 콘솔 애플리케이션이니 입력은 Scanner 를 통해 받고, 출력은 System.out.println 을 통해 합니다.public static int inputGameRecordId() { System.out.println("게임 기록을 조회할 ID를 입력해주세요."); return scanner.nextInt();}입력 받는 값은 게임 기록을 조회할 ID입니다.단순히 이걸 입력 받을 수 있는 메서드를 만들어서 처리해주면 됩니다.package baseball.vi..
💡 원본글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..
· Backend/Java
서론 Java의 학습을 위해, 미션 학습을 진행하고 있습니다. 첫번째 미션으로는 “숫자야구게임”을 진행해보려고 합니다. Step1을 종료하고, Step2로 넘어갈 예정입니다. Step1의 글을 작성하고 정리하면서 아쉬웠던 부분들을 Step2에서 같이 리팩토링을 진행해볼 예정입니다. 가장 중요한건 확장가능한 설계와 도메인 모델 정의, 테스트 코드 작성을 통한 안정적인 애플리케이션 구현을 가지고 해당 미션을 진행해보려고 합니다. 의도적으로 꼼꼼한 테스트 코드와 원시값 포장을 진행하였습니다. 해당 부분은 참고해주시면 좋을거 같습니다. 미션 요구사항 숫자야구게임이란? 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임입니다. 컴퓨터와 싸우는 게임으로 컴퓨터가 뽑은 랜덤의 숫자를 뽑을수 있도록 합니..
· Backend/Java
서론 이제 실제 콘솔 애플리케이션이 동작하도록 실제 View와 Controller의 결합을 해보도록 하겠습니다. View 실제 사용자가 값을 입력하고, 로직이 실행된 뒤의 결과를 출력하기 위한 계층으로 우리는 콘솔 애플리케이션이니 입력은 Scanner 를 통해 받고, 출력은 System.out.println 을 통해 합니다. import java.util.Arrays; import java.util.List; import java.util.Scanner; public class InputView { private static final Scanner scanner = new Scanner(System.in); private static final String INPUT_DELIMITER = ""; pri..
Seyun(Marco)
Enthusiastically, Steady, Slowly