전체 글159 Item1. 정적 팩터리 메소드는 인스턴스를 얻기를 추상화한다 이 문서가 다루는 것 정적 팩터리 메소드는 인스턴스를 얻기를 추상화한다 static 키워드 메소드 시그니처의 추상화 : 상위 관점에서의 협력 기술 인스턴스 얻는 방법의 추상화 : 플라이웨이트(캐싱), 싱글톤 반환 타입의 추상화 : 인터페이스를 보고 프로그래밍하라 서비스 제공자 프레임워크 관점에서의 유연성 : 스프링, ServiceLoader, 브리지 패턴 상속 vs 합성 정적 팩토리 메서드의 네이밍 패턴과 자바 독스 Simple Factory, Factory Method, Abstract Factory 패턴 비교 클래스의 인스턴스를 얻는 방법으로 정적 팩터리 메서드를 사용할 수 있다. 정적 팩터리 메소드는 인스턴스를 얻는 방법을 추상화하므로, new 연산자를 사용하는 것보다 훨씬 .. 2023. 5. 14. 서버 구조 바로 알기 - WAS? Tomcat? Servlet Conainer???? (feat. Jar vs War) 스프링 부트의 패키징 방식의 차이점! Jar : 단독으로 실행 가능한 자바 프로그램 패키지 형식으로, 애플리케이션 코드와 라이브러리 코드가 모두 포함됨. Jar로 패키징한 스프링부트 애플리케이션은 내장 서버를 포함하므로 JVM에서 바로 실행 가능하다. War : 웹 애플리케이션을 패키징하는 형식으로, 웹 애플리케이션에 필요한 파일들을 하나의 파일로 압축. War 파일은 톰캣과 같은 WAS에 배포되어 실행되며, 서블릿 컨테이너에서 실행한다. …을 알아보다가 WAS와 웹 서버, 서블릿 컨테이너가 갑자기 헷갈려서 개념을 다시 정리해보았다. Web Server! 웹 서버는 클라이언트로부터 요청을 받고 응답을 하는 소프트웨어를 말한다. (하드웨어의 의미로 본다면 웹 서버 소프트웨어가 동작하는 컴퓨터를 말한다) 클.. 2023. 5. 14. Containerless Spring Boot 들어가기에 앞서 이 문서는 토비 님의 스프링 부트 강의 독립 실행형 애플리케이션 파트의 큰 흐름을 요약합니다. 개선 과정 전체를 따라해보고싶다면 강의를 구입해서 들어보세요. 정말 좋은 강의입니닷 이러한 내용을 다룹니다. 스프링 애플리케이션이 무엇에 독립적으로 실행된다는 의미인가? 스프링 애플리케이션이 뜨기 위해서 서블릿 컨테이너가 왜 필요한가? 요청과 응답을 처리하기 위해 필요한 작업은 무엇인가? 서블릿 등록 코드를 어떻게 개선하기 위해 도입한 패턴은 무엇인가? 스프링은 어떻게 매핑과 바인딩 정보를 등록하는가? 스프링부트는 어떻게 서블릿 컨테이너와 스프링 컨테이너 초기화를 모듈화하는가? Containerless 컨테이너리스를 지향한다는 것은 서블릿 컨테이너와 관련된 복잡한 설정과 지식을 몰라도 배포를 할.. 2023. 5. 12. 2장 객체지향 프로그래밍 2장에서 기억하고 싶은 것 객체지향이 강력한 이유 : 요구사항 분석부터 구현까지 도메인이라는 일관된 추상화 기법을 사용함 객체 지향의 본질 : 말 그대로 ‘객체’를 지향하는 것 객체지향 설계의 핵심 : 적절한 협력을 식별하고 협력에 필요한 역할을 정의한 후에 역할을 수행할 수 있는 적절한 객체에게 적절한 책임을 할당하는 것이다. 캡슐화 : 절차지향 접근법과 비교했을 때 객체지향 접근법의 차이는 객체를 자율적인 존재로 만드는 것이다. 그러기 위해서는 객체가 상태와 프로세스를 함께 가지면서 자신의 상태를 자기만 변경할 수 있어야 한다. 객체의 접근제어 : 객체의 캡슐화를 통해 상태를 변경할 수 있는 주체는 자신으로 제한했다. 객체들이 협력하는 과정에서 어떤 객체의 상태 변화를 기대한다면, 해당 객체에게 상태.. 2023. 4. 29. 클라우드 네이티브 컴퓨팅과 MSA CNCF가 정한 클라우드 네이티브 컴퓨팅의 3대 요소에 MSA가 포함된다. 클라우드 네이티브 컴퓨팅이 무엇인지, MSA가 어떤 이유로 클라우드 네이티브 컴퓨팅에 필요한지 살펴보자. 우선 클라우드 컴퓨팅이 무엇인지부터 알아보자. 클라우드 컴퓨팅 클라우드 컴퓨팅이란 인터넷을 통해 서비스나 인프라, 리소스 등을 제공하는 것을 말한다. 클라우드 컴퓨팅은 2000년대 초반에 등장하여 다음과 같이 발전했다. 2000년대 : SaaS 2010년대 : IaaS 2020년대 : PaaS 그외 : CI/CD, Devops, Agile SaaS는 소프트웨어 자체를 인터넷을 통해 제공하는 것이다. REST 프로토콜이 HTTP의 난해한 사용 환경을 표준화했다. IaaS는 서버, 네트워크, 저장소 등을 가상으로 제공하는 것이다... 2023. 4. 27. DX(디지털 전환) : MSA가 중요해진 배경 왜 소프트웨어나 시스템 설계는 유연하고 확장 가능한 구조를 추구할까? 애자일 개발론에 따르면 그 이유는 요구사항이 항상 변화하기 때문이다. 그렇다면 요구사항은 왜 항상 변화하는가? 바뀌지 않는 유일한 것은 바뀌지 않는 것이 없다는 사실이라서? 물론 이런 철학적인 이야기도 답이 될 수 있지만, 2010년대부터 유구히 강조되는 확장 가능한 구조에 대한 답이 되기는 어려워보인다. 적절한 답변을 디지털 전환(DX)에서 찾았다. DX는 디지털 전환의 약어로, 비즈니스 주체를 IT에 맡겨서 비즈니스를 근본적으로 혁신하는 것을 말한다. DX 이전의 비즈니스 주체는 사람이 담당하는 사업 부서였고 시장에 상품과 서비스를 지원하는 역할을 이들이 담당했다. 하지만 디지털 기술이 사회와 경제에 보급되면서 많은 기술이 자동화 .. 2023. 4. 27. 이전 1 ··· 11 12 13 14 15 16 17 ··· 27 다음