Skip to content

Commit fd9085d

Browse files
committed
docs: 스프링, 싱글톤, CI/CD 수정
1 parent 93e128c commit fd9085d

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

README.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -821,7 +821,7 @@
821821
<details>
822822
<summary>Spring Bean이란 무엇인가요?</summary>
823823
</br>
824-
<p>컨테이너 안에 들어있는 객체로 필요할 때 컨테이너에서 가져와서 사용합니다. `@Bean` 을 사용하거나 xml설정을 통해 일반 객체를 Bean으로 등록할 수 있습니다.</p>
824+
<p>IoC 컨테이너 안에 들어있는 객체로 필요할 때 IoC컨테이너에서 가져와서 사용합니다. @Bean 을 사용하거나 xml설정을 통해 일반 객체를 Bean으로 등록할 수 있습니다.</p>
825825
</details>
826826

827827
<details>
@@ -837,7 +837,7 @@
837837
<p>빈 스코프는 빈이 존재할 수 있는 범위를 뜻하며 싱글톤, 프로토타입, request, session, application 등이 있습니다.</p>
838838
<p>싱글톤은 기본 스코프로 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프입니다.</p>
839839
<p>프로토타입은 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프입니다.</p>
840-
<p>request는 웹 요청이 들어오고 나갈때까지 유지하는 스코프, session은 웹 세션이 생성, 종료할때까지, application은 웹 서블릿 컨텍스와 같은 범위로 유지하는 스코프입니다.</p>
840+
<p>request는 웹 요청이 들어오고 나갈때까지 유지하는 스코프, session은 웹 세션이 생성, 종료할때까지, application은 웹 서블릿 컨텍스트와 같은 범위로 유지하는 스코프입니다.</p>
841841
</details>
842842

843843
<details>
@@ -900,7 +900,7 @@
900900
<details>
901901
<summary>POJO란 무엇인가요? Spring Framework에서 POJO는 무엇이 될 수 있을까요?</summary>
902902
</br>
903-
<p>POJO는 프레임워크 인터페이스, 클래스를 구현하거나 확장하지 않은 단순한 클래스로 Java에서 제공하는 API 외에 종속되지 않습니다. 특정 환경에 종속되지 않아 코드가 간결하고 테스트 자동화에 유리합니다.</p>
903+
<p>POJO는 프레임워크 인터페이스, 클래스를 구현하거나 확장하지 않은 단순한 클래스로 Java에서 제공하는 API 외에 종속되지 않습니다. 특정 환경에 종속되지 않아 코드가 간결하고 테스트 자동화에 유리합니다. 스프링에서는 도메인과 비즈니스 로직을 수행하는 대상이 POJO대상이 될 수 있습니다.</p>
904904
</details>
905905

906906
<details>
@@ -1001,7 +1001,18 @@
10011001
<p>전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴입니다.</p>
10021002
<p>하나의 인스턴스만을 생성하며 getInstance메서드로 모든 클라이언트에게 동일한 인스턴스를 반환합니다.</p>
10031003
<p>private 생성자를 가지는 특징을 가지며, 생성된 싱글톤 오브젝트는 저장할 수 있는 자신과 같은 타입의 스태틱 필드를 정의합니다.</p>
1004-
<p>가끔 면접에서 싱글톤 클래스를 만들라고 요구할 때도 있습니다. 그럴 때는 간단한 싱글톤 클래스를 준비하는게 좋습니다.</p>
1004+
<p>싱글톤 패턴의 문제점은 다음과 같습니다.</p>
1005+
<ul>
1006+
<li>의존 관계상 클라이언트가 구체 클래스에 의존합니다.</li>
1007+
<li>private 생성자 때문에 테스트가 어렵습니다.</li>
1008+
<li>객체 인스턴스를 하나만 생성해서 공유하는 방식 때문에 싱글톤 객체를 stateful하게 설계 했을 경우 큰 장애 발생요인이 됩니다.</li>
1009+
</ul>
1010+
<p>싱글톤의 단점을 해결하기 위해 무상태(stateless)로 설계해야 합니다.</p>
1011+
<ul>
1012+
<li>특정 클라이언트에 의존적인 필드가 있으면 안됩니다.</li>
1013+
<li>특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안됩니다.</li>
1014+
<li>가급적 읽기 전용으로 만들고, 필드 대신에 자바에서 공유되지 않는 지역변수, 파라미터, ThreadLocal 등을 사용합니다.</li>
1015+
</ul>
10051016
</details>
10061017

10071018
<details>
@@ -1111,7 +1122,7 @@ DevOps는 어쩌면 신입에겐 물어보지 않을 수도 있습니다. 하지
11111122
<summary>CI/CD가 무엇인가요? 왜 CI/CD가 장점이 될까요?</summary>
11121123
</br>
11131124
<p>보통 이 질문을 하는 동시에 어떤 CI/CD를 써봤는지 질문을 할 것입니다. 그때 썼던 CI/CD툴을 설명하고, 그 툴의 장단점을 설명하면 좋습니다.</p>
1114-
<p>코드 버전 관리를 하는 VCS 시스템에 push가 되면 테스트와 빌드가 수행되어 안정적인 배포파일을 만드는 과정을 CI(지속적 통합)이라고 하며, 이 빌드 결과를 자동으로 운영 서버에 배포까지 되는 과정을 CD(지속적 배포)라고 합니다.</p>
1125+
<p>코드 버전 관리를 하는 VCS 시스템에 push가 되면 테스트와 빌드가 수행되어 안정적인 배포파일을 만드는 과정을 CI(지속적 통합, continuous integration)이라고 하며, 이 빌드 결과를 자동으로 운영 서버에 배포까지 되는 과정을 CD(지속적 배포, continuous delivery or continuous deployment)라고 합니다.</p>
11151126
<p>푸시가 될 때마다 코드를 병합하고, 테스트 코드와 빌드를 수행하면서 자동으로 코드가 통합되어 더는 수동으로 코드를 통합할 필요가 없어져 개발에만 신경을 쓸 수 있습니다.</p>
11161127
<p>이 CI / CD의 중요한 것은 테스트 자동화입니다. 프로젝트의 완전한 상태임을 보장하기 위해 테스트 코드가 구현되어 있어야 합니다.</p>
11171128
</details>

0 commit comments

Comments
 (0)