Skip to content

thislast/wanted-pre-onboarding-challenge-BE-task-December

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

1-1) 사전과제 진행 가이드

  • 아래 총 5 문제에 대한 해설을 작성한 뒤 Pull Request를 날려주세요.
  • 문제 해설에 대한 정해진 양식은 없으며, 최대한 자세히 해설해주시면 좋습니다.
  • 문제 유형은 해당 코스에서 다룰 주제들을 포함하고 있으니 완벽히 이해하시면 코스를 수강하는데 큰 도움이 될 것입니다.

*문의 사항은 사전 과제 Repository의 Issue로 등록해 주세요.

1-2) 사전 과제

  • (1) 동기와 비동기 프로그래밍에 대한 차이점을 설명해주세요.

    -동기는 말 그대로 동시에 일어난다는 뜻이다. 요청과 그 결과가 동시에 일어나며 바로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어진다. 순서에 맞춰 진행되는 장점이 있지만, 여러가지 요청을 동시에 처리할 수 없다. 설계가 매우 간단하고 직관적이지만, 결과가 주어질 때 까지 아무것도 못하고 대기해야 하는 단점이 있다.

    • 비동기는 동시에 일어나지 않는다는 뜻이다. 요청과 결과가 동시에 일어나지 않는 것이며 하나의 요청에 따른 응답을 즉시 처리하지 않아도, 그 대기 시간동안 또 다른 요청에 대해 처리 가능한 방식이다. 여러 개의 요청을 동시에 처리 할 수 있는 장점이 있지만, 동기방식보다 속도가 떨어지며 동기보다 복잡하지만 결과가 주어지는데 시간이 걸리더라도 그 시간동안 작업을 할 수 있으므로 자원을 효율적으로 사용 할 수 있다는 장점이 있다.

    => 결론적으로 동기는 추구하는 같은행위(목적)가 동시에 이루어지며, 비동기는 추구하는 행위(목적)가 다를 수도 있고, 동시에 이루어지지도 않는다.

  • (2) 블로킹과 논블로킹의 차이점을 설명해주세요. 블로킹(Blocking) 자신의 작업을 진행하다가 다른 주체의 작업이 시작되면 자신의 작업을 멈추고 해당 작업을 기다렸다가 다시 자신의 작업을 시작한다. 논 블로킹(Non-Blocking) 다른 주체의 작업에 관련 없이 자신의 작업을 하는 것을 의미한다.

  • (3) 본인이 주로 사용하는 언어에서 비동기 프로그래밍을 사용하는 방법을 설명해주세요. Java의 경우 대표적으로 Stream 등 이미 많은 비동기 프로그램이 구현되어 있습니다. 직접 구현을 할때는 Thread, Future를 사용해서 구현할 수 있습니다.

  • (4) 메세지 큐를 쓰는 이유에 대하여 2가지 예시를 서술해주세요. 데이터 처리의 복잡성을 줄이고, 의존성을 최소화를 위해 사용합니다.

    • 각 서비스를 분리할 수 있어 느슨한 의존성을 만들 수 있어 MSA 환경에서 많이 사용됩니다.
    • Kafka의 경우 End to End 방식의 아키텍처를 Producer + Consumer 아키텍처로 변경해 구조가 단순하게 변경됩니다. 일괄처리를 위해 사용하는 경우도 있습니다.
  • (5) 본인이 작성한 서버 코드가 있는 github repo 주소를 제출해주세요. (CRUD 기능을 모두 포함하여야 하며, 서버에 대한 설명을 README에 작성해주시면 더욱 좋습니다.) https://github.com/thislast/comp1500.git

  • (6 - Optional) 해당 수업을 통해 꼭 배우고 싶은 주제 또는 지식이 있다면 자유롭게 서술해주세요. 현재 aws를 이용한 프로젝트를 진행중에 있습니다. 비용측면의 detail적인 배움과 aws의 효과적인 서비스 픽에대해 배우고싶습니다. ec2와 RDS dynamoDB에대해 자세히 배우고싶습니다

About

freeOnboarding

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published