헥사고날 아키텍처(Hexagonal Architecture), 또는 포트와 어댑터 아키텍처(Ports and Adapters Architecture) 이 아키텍처의 주요 목표는 비즈니스 로직을 외부 세계로부터 격리, 테스트하기 쉬운 구조를 만드는 것 이를 위해 핵심 비즈니스 로직은 중앙의 도메인 영역에 위치하며, 입력과 출력을 처리하는 포트와 어댑터를 통해 외부와 소통가장 대중적으로 사용하는 3계층 아키텍처(3 Tier Layered Architecture) 비즈니스 로직, 데이터 액세스, 프레젠테이션 계층 이와 달리 헥사고날 아키텍처는 비즈니스 로직에 중점을 두고 외부와 격리 1. 3계층 아키텍처 예// UserService.javapublic class UserService { private..
1. 쿠버네티스는 왜 쓰는건가?컨테이너를 하나만 띄우면 docker run으로 충분하지만,서버 수십~수백 대컨테이너 수백~수천 개자동 복구, 부하 분산, 롤링 업데이트 필요이런 상황이 되면 사람이 직접 관리 불가능하다.Kubernetes가 대신 해준다.하는 일컨테이너 배포 자동화컨테이너 상태 모니터링 및 장애 시 재시작부하에 따라 컨테이너 수 자동 조절 (오토스케일링)서비스 디스커버리(컨테이너 주소 관리)롤링 업데이트와 롤백 2. 쿠버네티스는 서비스인가? 프로젝트인가? 판매 소프트웨어인가? 정체가 뭔가? Kubernetes(K8s)는 개인이나 특정 회사가 만든 상용 서비스가 아니라 오픈소스 소프트웨어 프로젝트다.1. 처음 만든 곳Google이 내부에서 쓰던 Borg라는 시스템을 기반으로 개발2014년에 ..
# hosts 파일 내용127.0.0.1 example.com이후 웹 브라우저에서 http://example.com에 접속하면, → 인터넷 DNS에 묻지 않고, → 바로 127.0.0.1로 접속된다.C:\Windows\System32\drivers\etc\hosts 파일은 DNS보다 먼저 동작하는 도메인-주소 매핑 설정 파일이다. www.google.com을 입력하면 → 컴퓨터는 먼저 이 도메인이 어느 IP 주소인지 알아야 한다.이때 순서는 보통 이렇게 된다:hosts 파일 확인DNS 서버에 물어봄 (ISP, 회사 DNS 등)즉, hosts 파일은 DNS보다 우선순위가 높다.
PAC 파일의 목적은 단 하나: 어떤 URL 요청이 어떤 프록시를 거칠지 자동으로 결정해주는 것.Windows에 http://your-company.com/proxy.pac 주소를 입력하면 브라우저(또는 일부 앱)는 해당 URL의 .pac 파일을 다운받고 URL 요청마다 FindProxyForURL() 함수에 넘겨서 "프록시를 거칠지 말지" 판단함function FindProxyForURL(url, host) { // url:접속하려는 URL, host:접속 대상의 도메인 if (shExpMatch(host, "*.internal.company.com")) { // 조건부 프록시 : 특정 도메인만 프록시를 거치게 할 수 있음 return "PROXY proxy.company.com:8..
1. node js 가 뭐야?Node.js는 JavaScript로 서버를 만들 수 있게 해주는 실행 환경(runtime) 이다. 원래 JavaScript는 어디서 실행됐을까?원래는 웹 브라우저(Chrome, Firefox 등) 안에서만 실행됐다.즉, 클라이언트(브라우저) 쪽에서만 쓰였다.Node.js는 뭘 가능하게 했을까?자바스크립트를 브라우저 바깥, 즉 서버에서도 실행할 수 있게 만들었다.덕분에, 프론트엔드와 백엔드를 모두 JavaScript로 개발할 수 있게 됐다.Node.js는 어떤 상황에 쓰일까?웹 서버 개발(예: 로그인 기능, 게시판 백엔드, API 서버 등)실시간 채팅 서버CLI 도구 만들기 (예: npm)빌드 도구, 테스트 도구 실행 환경(React, Vue, Next.js 같은 프레임워크도..
Spring Boot(Java 또는 Kotlin)에서 프론트로부터 다음과 같은 JSON:{ "century": "19C", "duration": ["초","중"] }를 받아서 각 조합을 실제 날짜 범위 (startDate, endDate)로 변환하는 로직을 아래에 예시로 보여주겠다.✅ 입력 → 날짜 범위 변환 로직🔸 전제 기준"19C" → 1801 ~ 1900"초" → 1/3 구간 (1801 ~ 1833)"중" → 2/3 구간 (1834 ~ 1866)"후" → 3/3 구간 (1867 ~ 1900)✅ Kotlin 기준 Controller + Service 예시// DTOdata class PeriodRequest( val century: String, val duration: List)data..