์ธํ”„๋ผ & ์•„ํ‚คํ…์ฒ˜

ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ์ดํ•ดํ•˜๊ธฐ

yongh๐Ÿ™‚ 2025. 10. 27. 03:02

๊ฐœ์š”

์ง€๊ธˆ๊นŒ์ง€ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ฒ˜์Œ ์ ‘ํ•œ ์•„ํ‚คํ…์ฒ˜์˜€๊ณ , ์ต์ˆ™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์„ ํƒํ•ด ์™”์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ด ์ง€๋‚ ์ˆ˜๋ก ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

 

ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๊ฐ€ ํ•œ๋ˆˆ์— ๋“ค์–ด์˜ค์ง€ ์•Š์•˜๊ณ , ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์–ด๋””์— ์œ„์น˜์‹œ์ผœ์•ผ ํ• ์ง€ ๊ณ ๋ฏผํ•˜๋Š” ์‹œ๊ฐ„๋„ ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐ˜๋ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฒฝํ—˜์ด ์Œ“์ด๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์— ๊ด€์‹ฌ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์™€ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜, ์ด์ „๋ถ€ํ„ฐ ๋งŽ์ด ๋“ค์–ด๋ดค์ง€๋งŒ, ๋‹น์‹œ์—๋Š” ํฌ๊ฒŒ ์™€๋‹ฟ์ง€ ์•Š์•˜๊ณ , ์ดํ•ด ์—†์ด ์ ์šฉํ•˜๋ ค ํ•˜๋‹ˆ ์–ด๋ ต๊ฒŒ๋งŒ ๋А๊ปด์ ธ ๋ฏธ๋ค„๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์•ž์„œ ์–ธ๊ธ‰ํ•œ ๋ฌธ์ œ๋“ค์ด ๊ณ„์†๋˜๋ฉด์„œ ์ด์ œ๋Š” ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ์ ์šฉํ•ด ๋ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ์šฐ์—ฐํžˆ ๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์šฐ๋Š” ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ผ๋Š” ์ฑ…์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ์ด ์ฑ…์„ ์ฝ์œผ๋ฉฐ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์— ๊ด€ํ•œ ๋‚ด์šฉ๊ณผ ์ €์˜ ์ƒ๊ฐ์„ ์ •๋ฆฌํ•ด ๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

 

๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์˜ ๋ฌธ์ œ์ 

์ฑ…์—์„œ๋Š” ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ฐ€์ง€๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์„ ์ง€์ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์ค‘ ๊ฐ€์žฅ ์™€๋‹ฟ๋Š” ๋ถ€๋ถ„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฃผ๋„ ์„ค๊ณ„๋กœ ํ๋ฅด๊ธฐ ์‰ฝ๋‹ค๋Š” ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”ํžˆ๋“ค ์‚ฌ์šฉํ•˜๋Š” ORM ํ”„๋ ˆ์ž„์›Œํฌ์˜ @Entity, @JoinColumn ๋“ฑ์˜ ์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋œ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๊ฐ€ ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค.

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class HouseWork {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;

	private String name;

	@ManyToOne
	@JoinColumn(name = "place_id")
	private Place place;

	@ManyToOne
	@JoinColumn(name = "house_work_group_id")
	private Group group;

    ...
    
}

 

์ด์ฒ˜๋Ÿผ ์—”ํ‹ฐํ‹ฐ๊ฐ€ JPA ์–ด๋…ธํ…Œ์ด์…˜์— ๋ฌถ์—ฌ ์žˆ๋‹ค ๋ณด๋‹ˆ ์„œ๋น„์Šค ๊ณ„์ธต์ด ์˜์†์„ฑ ๋ชจ๋ธ์„ ๊ณง ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ณ , ๊ฒฐ๊ตญ ์˜์†์„ฑ ๊ณ„์ธต๊ณผ ๋„๋ฉ”์ธ ๊ณ„์ธต ์‚ฌ์ด์— ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์ด ํ˜•์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ JPA ์ŠคํŽ™์ƒ private๊ฐ€ ์•„๋‹Œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ๋„ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ๋“œ๋Ÿฌ๋‚ด๋Š” ์˜ˆ์‹œ๋ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์ด๋Ÿฐ ์‹์œผ๋กœ ๋„๋ฉ”์ธ์ด ์˜์†์„ฑ์— ์˜์กดํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์„œ๋น„์Šค๊ฐ€ JPA ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๊ทธ ๋ณ€ํ™”๊ฐ€ ๊ณง๋ฐ”๋กœ ๋„๋ฉ”์ธ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์˜์กด์„ฑ์˜ ๋ฐฉํ–ฅ์ด ์•ˆ์ชฝ(๋„๋ฉ”์ธ)์œผ๋กœ ํ–ฅํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๊นฅ์ชฝ์œผ๋กœ ํ–ฅํ•˜๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์˜ ๋‹จ์ˆœํ•œ ๊ทœ์น™์„ฑ์ž…๋‹ˆ๋‹ค. "ํŠน์ • ๊ณ„์ธต์€ ๊ฐ™์€ ๊ณ„์ธต์ด๋‚˜ ํ•˜์œ„ ๊ณ„์ธต์—๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค."๋Š” ์ •๋„์˜ ๊ทœ์น™๋งŒ ์กด์žฌํ•˜๋‹ค ๋ณด๋‹ˆ, ๊ตฌ์กฐ์  ์ œ์•ฝ์ด ์•ฝํ•˜๊ณ  ํŽธ์˜ ์œ„์ฃผ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ˜๋Ÿฌ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฒฐ๊ตญ ์ฝ”๋“œ๋ฅผ ์ง€์ €๋ถ„ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๊ฒŒ ๋˜๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋น„๋Œ€ํ•ด์ง„ ์„œ๋น„์Šค ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

@RequiredArgsConstructor
@Transactional(readOnly = true)
@Service
public class HouseWorkService {

	private final HouseWorkRepository houseWorkRepository;
	private final HouseWorkTagRepository houseWorkTagRepository;
	private final HouseWorkMemberRepository houseWorkMemberRepository;
	private final EmotionCardRepository emotionCardRepository;

	private final MemberService memberService;
	private final GroupService groupService;

	public List<HouseWorkStatusByPeriodResponse> getHouseWorkStatusByPeriod(
		Long groupId,
		LocalDate from,
		LocalDate to
	) {
		List<HouseWorkStatusByPeriodResponse> responses = new ArrayList<>();
		List<LocalDate> result = houseWorkRepository.findTaskDatesBetween(groupId, from, to);
		for (LocalDate date = from; !date.isAfter(to); date = date.plusDays(1)) {
			responses.add(new HouseWorkStatusByPeriodResponse(date, result.contains(date)));
		}
		return responses;
	}
    
    @Transactional
	public void completeHouseWork(Long memberId, Long houseWorkId) {
		if (!houseWorkMemberRepository.existsByHouseWorkIdAndMemberId(houseWorkId, memberId)) {
			throw new IllegalStateException("Not authorized");
		}

		HouseWork houseWork = findById(houseWorkId);
		houseWork.markCompleted();
	}
    
    ...
    
}

(์‹ค์ œ ์ฝ”๋“œ ์ „์ฒด๋Š” ์•ฝ 500์ค„์— ๋‹ฌํ•˜๋Š” ์ƒ๋‹นํžˆ ๋šฑ๋šฑํ•œ ์„œ๋น„์Šค ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.)

 

์ด์ฒ˜๋Ÿผ ๋น„๋Œ€ํ•ด์ง„ ์„œ๋น„์Šค๋Š” ์—ฌ๋Ÿฌ ์˜์†์„ฑ ๊ณ„์ธต์— ์˜์กดํ•˜๊ฒŒ ๋˜๊ณ , ๋งŽ์€ ์›น ๊ณ„์ธต ๋˜ํ•œ ์ด ์„œ๋น„์Šค์— ์˜์กดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ๊ฐ ๊ธฐ๋Šฅ(์œ ์Šค์ผ€์ด์Šค)์˜ ์ฑ…์ž„์ด ์–ด๋””์— ์žˆ๋Š”์ง€ ์ฐพ๊ธฐ ํž˜๋“ค์–ด์ง€๊ณ , ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋กœ์ง์„ ์ˆ˜์ •ํ•  ๋•Œ ์˜ํ–ฅ๋ฐ›๋Š” ๋ฒ”์œ„๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ํž˜๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

 

์ € ์—ญ์‹œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๋น„๋Œ€ํ•ด์ง„ ์„œ๋น„์Šค๋กœ ์ธํ•ด ์ง์ ‘ ๊ฒช์€ ๋ฌธ์ œ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ€ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœํ•  ๊ฒฝ์šฐ, ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋”๋ผ๋„ ๊ฐ™์€ ์„œ๋น„์Šค ํด๋ž˜์Šค ๋‚ด์—์„œ ์ž‘์—…ํ•˜๋‹ค ๋ณด๋‹ˆ ์ฝ”๋“œ ์ถฉ๋Œ์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ๋ณ‘ํ•ฉ ์‹œ ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์šด ์ƒํ™ฉ์„ ์ž์ฃผ ๋งŒ๋‚ฌ๋˜ ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด ์™ธ์—๋„ ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•˜๋Š”๋ฐ, ๊ฒฐ๊ตญ ๊ณตํ†ต๋œ ๋ฌธ์ œ๋Š” ์ฝ”๋“œ์˜ ์ดํ•ด์™€ ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ , ๊ทธ๋กœ ์ธํ•ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

 

ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ž€

ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋Š” ์•ž์„œ ์–ธ๊ธ‰ํ•œ ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์˜ ๋ฌธ์ œ์ ๋“ค์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.

 

๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์›์น™์€ ์˜์กด์„ฑ์— ๋Œ€ํ•œ ๊ฒƒ์œผ๋กœ, ๋„๋ฉ”์ธ ๊ณ„์ธต์„ ์ค‘์‹ฌ์œผ๋กœ ๊ณ„์ธต ๊ฐ„์˜ ๋ชจ๋“  ์˜์กด์„ฑ์ด ์•ˆ์ชฝ์œผ๋กœ๋งŒ ํ–ฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์€ ๋น„์ฆˆ๋‹ˆ์Šค์˜ ๋ณธ์งˆ์„ ํ‘œํ˜„ํ•˜๋Š” ์˜์—ญ์œผ๋กœ, ๋‹ค๋ฅธ ๊ณ„์ธต์— ๋น„ํ•ด ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์ด ๊ฐ€์žฅ ๋‚ฎ์€ ์•ˆ์ •์ ์ธ ์˜์—ญ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์™ธ๋ถ€ ์š”์†Œ(UI๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“ฑ)๋Š” ๊ธฐ์ˆ  ๋ณ€ํ™”๋‚˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ž์ฃผ ๋ฐ”๋€Œ๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์˜์กด์„ฑ์„ ์•ˆ์ชฝ์œผ๋กœ ํ–ฅํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ์™ธ๋ถ€ ๊ณ„์ธต์˜ ๋ณ€๊ฒฝ์ด ๋„๋ฉ”์ธ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋Š”์ง€, UI์— ๋Œ€ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์ด ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋Š”์ง€ ๋“ฑ, ๋„๋ฉ”์ธ์—์„œ๋Š” ์ด๋Ÿฐ ๊ฒƒ๋“ค์„ ์ „ํ˜€ ์•Œ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

 

๋˜ํ•œ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ์œ ์Šค์ผ€์ด์Šค(์„œ๋น„์Šค)๋ฅผ ๊ธฐ์กด๋ณด๋‹ค ์„ธ๋ถ„ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)์„ ์ค€์ˆ˜ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ ๊ธฐ๋Šฅ์ด ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌ๋˜์–ด ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

 

์ด์ „์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ์„œ๋น„์Šค ํด๋ž˜์Šค์—์„œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ๋‹ค๋ฃฐ ๋•Œ ๊ฒช๋˜ ๋ถˆํŽธํ•จ๋„ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•ด์ง€๊ณ , ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋‚˜ ๋ณ€๊ฒฝ์ด ์‰ฌ์›Œ์ง€๋ฉฐ, ํŒ€ ๋‹จ์œ„ ํ˜‘์—…์—์„œ๋„ ๋™์‹œ ์ž‘์—…์ด ํ›จ์”ฌ ์ˆ˜์›”ํ•ด์ง‘๋‹ˆ๋‹ค.

 

๋ฌผ๋ก  ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์—๋„ ๋‹จ์ ์€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์˜์กด์„ฑ ๋ฐฉํ–ฅ์„ ์ง€ํ‚ค๊ณ  ๊ฐ ๊ณ„์ธต์˜ ์ฑ…์ž„์„ ๋ช…ํ™•ํžˆ ํ•˜๋‹ค ๋ณด๋ฉด ๊ตฌ์กฐ๊ฐ€ ๋‹ค์†Œ ๋ณต์žกํ•ด์ง€๊ณ , ๊ตฌํ˜„ ๊ณผ์ •์ด ๋ฒˆ๊ฑฐ๋กœ์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, JPA ์—”ํ‹ฐํ‹ฐ๋Š” ์˜์†์„ฑ ๊ณ„์ธต์—์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋„๋ฉ”์ธ ๊ณ„์ธต์—๋Š” ๋ณ„๋„์˜ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ํฌ์ง€ ์•Š๊ฑฐ๋‚˜ ์ฃผ์–ด์ง„ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด ์งง์„ ๊ฒฝ์šฐ, ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ์  ๋ณต์žกํ•จ์ด ์˜คํžˆ๋ ค ๊ฐœ๋ฐœ ํšจ์œจ์„ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ์›์ธ์ด ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งˆ๋ฌด๋ฆฌ

๊ฒฐ๊ตญ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ง€ํ–ฅํ•˜๋˜, ๋งน์‹ ํ•˜์ง€๋Š” ๋ง์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ œ์‹œํ•˜๋Š” ์›์น™๋“ค์€ ๋ชจ๋‘ ๊นจ๋—ํ•œ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋˜์ง€๋งŒ, ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ๋Š” ์˜คํžˆ๋ ค ๋น„ํšจ์œจ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ €์˜ ๊ฒฝํ—˜์„ ์˜ˆ๋กœ ๋“ค๋ฉด 8์ฃผ๊ฐ„์˜ IT ๋™์•„๋ฆฌ ํ™œ๋™ ์ค‘ ์‹ค์ œ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด ์•ฝ 3์ฃผ ์ •๋„๋ฐ–์— ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ทธ ์ƒํ™ฉ์—์„œ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ผผ๊ผผํžˆ ์ ์šฉํ•˜๋ ค ํ–ˆ๋‹ค๋ฉด ์•„๋งˆ ๋งˆ๊ฐ ๊ธฐํ•œ์„ ๋งž์ถ”๊ธฐ ์–ด๋ ค์› ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ด์ฒ˜๋Ÿผ ์‹œ๊ฐ„์ด ์ด‰๋ฐ•ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ๋กœ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋„ ์ถฉ๋ถ„ํžˆ ์ข‹์€ ์„ ํƒ์ง€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ๊ณ„์ธต๊ณผ ์„œ๋น„์Šค ๊ณ„์ธต ๊ฐ„์˜ ์˜์กด์„ฑ์€ ์ด๋ฏธ ๋„๋ฉ”์ธ ๋ฐฉํ–ฅ์œผ๋กœ ํ–ฅํ•ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตณ์ด ํฌํŠธ๋ฅผ ๋‘์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดํ›„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ข€ ๋” ๋ณต์žกํ•ด์ง€๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜์— ์—ฌ์œ ๊ฐ€ ์ƒ๊ธด ์‹œ์ ์— ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜๋Š” ์ ‘๊ทผ์ด ๋” ํ˜„์‹ค์ ์ธ ๋ฐฉ์•ˆ์ด ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์œ ์ง€๋ณด์ˆ˜์— ์šฉ์ดํ•œ ์ฝ”๋“œ๊ฐ€ ์ข‹์€ ์ฝ”๋“œ๋ผ๋Š” ์ƒ๊ฐ์—๋Š” ๋ณ€ํ•จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฑ…์—์„œ๋Š” "๊นจ์ง„ ์œ ๋ฆฌ์ฐฝ ์ด๋ก "์„ ์–ธ๊ธ‰ํ•˜๋Š”๋ฐ, ์ด๋Š” ๊นจ์ง„ ์œ ๋ฆฌ์ฐฝ ํ•˜๋‚˜๋ฅผ ๋ฐฉ์น˜ํ•˜๋ฉด ๊ทธ ์ฃผ๋ณ€์œผ๋กœ ๋ฒ”์ฃ„๊ฐ€ ํ™•์‚ฐ๋œ๋‹ค๋Š” ์ด๋ก ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ ์—ญ์‹œ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์‚ฌ์†Œํ•ด ๋ณด์ด๋Š” ๊ทœ์น™ ์œ„๋ฐ˜์„ ๋ฐฉ์น˜ํ•˜๋‹ค ๋ณด๋ฉด ๊ทธ ๋ˆ„์ ์ด ์Œ“์—ฌ ์ฝ”๋“œ ํ’ˆ์งˆ์ด ์ ์  ๋–จ์–ด์ง€๊ณ , ๊ฒฐ๊ตญ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ € ๋˜ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ด๋Ÿฐ ๊ณผ์ •์„ ์ง์ ‘ ๊ฒฝํ—˜ํ–ˆ๊ธฐ์— ์ด ๋ถ€๋ถ„์— ํŠนํžˆ ๊ณต๊ฐ์ด ๋์Šต๋‹ˆ๋‹ค.

 

์•ž์œผ๋กœ ์ง„ํ–‰ํ•  ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฒ—์–ด๋‚˜, ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ์›์น™์„ ๋ฐ”ํƒ•์œผ๋กœ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๊ฒฌ๊ณ ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.